在非投入登录中调用Angular2点击事件



我正在测试一个有单击输入的组件。

<div (click)="handleClick(someArgs)"></div>

现在我想验证测试中的行为。我尝试在本地元素上使用.click()

const elem = fixture.debugElement.query(By.css('my-selector'));
elem.nativeElement.click();
// Check for desired changes

但是,这仅在特定浏览器中起作用,因为.click()似乎仅针对HTMlinputements(相关的stackoverflow)定义。我收到以下错误的 'undefined' is not a function (evaluating elem.nativeElement.click()'),用于几个浏览器。

在非htmlinputelement上调用单击事件的最佳方法是什么?

我认为最好的方法是在 DebugElement

上调用 triggerEventHandler()

triggereventhandler

如果有相应的侦听器在 元素的听众集合。第二个参数是事件 处理程序期望的对象。

如果事件缺乏听众或其他问题,请考虑 调用atnationlement.dispatchevent(EventObject)

测试文档

  • https://angular.io/docs/ts/latest/guide/testing.html#! #trigger-event handler

通常,当您想使用普通JS触发HTML元素时,您必须调用元素上定义的事件。

更新:如果您使用的是茉莉花,则可以尝试在元素上调用trigger

const elem = fixture.debugElement.query(By.css('my-selector'));
elem.nativeElement.trigger('click');

最新更新