【问题标题】:How to test an Angular directive was applied on the element如何测试 Angular 指令应用于元素
【发布时间】:2017-12-21 22:05:02
【问题描述】:

在我的应用程序中,我有一个带有简单点击事件的按钮和一个应用了 stopPropagation 指令的按钮。

这是组件模板:

<button (click)="closeElement()" [stopPropagation]>
    Close
</button>

该指令仅捕获元素上的任何事件并在任何事件上触发$event.stopPropagation()

该指令通过自己的测试自行测试。但是,在组件中,如何测试指令的实际应用呢?

【问题讨论】:

  • 用点击操作创建一个标签,看看你的指令是否阻止它?

标签: angular typescript jasmine


【解决方案1】:

我会使用https://jasmine.github.io/2.0/introduction.html 中解释的间谍。通过监视指令的功能,您可以使用“toHaveBeenCalled”验证单击按钮时是否调用了它。

it("tracks that the spy was called", function() {

let spy= spyOn(<yourDirective>, 'stopPropagation');

..trigger click event...
expect(stopPropagation).toHaveBeenCalled();});

如果有更多代码,我可能会给出一个更详细的编码示例,但这应该会引导你走上正确的道路。

【讨论】:

  • 你认为我应该测试元素上是否存在 HTML 属性吗?
  • 您可以这样做来仔细检查是否不仅调用了您的指令,而且还通过使用 Angular 的 TestBed 并检查夹具的 nativeElement 并使用 querySelector 来检查它是否对您的元素生效针对您的特定 HTML 元素,请参阅 Angular Testing 。如果你想这样做取决于你的项目测试策略。我会说做一次作为证明,但不要测试使用该指令的每个元素。如果我能进一步帮助您,请告诉我。
  • 感谢您的建议:)
猜你喜欢
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 2016-03-15
  • 2015-05-03
  • 2020-12-08
  • 1970-01-01
  • 2015-01-18
  • 2017-08-08
相关资源
最近更新 更多