茉莉花测试,导致mat-select发出selectionChange事件?

时间:2018-05-02 19:00:51

标签: angular jasmine angular-material2

在我的Angular5应用程序中,我有一个mat-select的日期列表。当用户从选项中选择新日期时,我的selectionChange处理器将启动数据请求。

我正在尝试编写一个Jasmine测试来模拟用户交互,以验证处理是否正确完成。我不知道如何让mat-select选择一个值并发出selectionChange,就像用户做出选择一样。

我在Angular Material2 GitHub(问题5082)上看到了一个引用mat-select测试的问题 - 我试图创建一个向下箭头keydown事件来触发下一个项目的选择:

let selCtrl = fixture.nativeElement.querySelector('mat-select');
selCtrl.dispatchEvent(new KeyboardEvent({key: 'ArrowDown', code: 'ArrowDown'});

然而,这似乎没有用 - 检查我创建的事件和看似没有创建keyCode的mat-select代码,并且mat-select需要它。

我已尝试以编程方式设置控件的值,但这不会触发selectionChanged的发送。

有关如何从Jasmine测试中选择触发更改的任何建议吗?

1 个答案:

答案 0 :(得分:1)

我要在mat-select上触发(selectionChange)事件的操作如下:

   fixture.debugElement.query(By.css('mat-select')).triggerEventHandler('selectionChange', { value: { id: 1 } });

这有效,我使用的selectionChange catch函数获取了“值”对象。 SelectionChange有点不同,您传递的$ event具有所有内容,因此您需要在$event.value

selectionChange=function($event.value);

希望这能回答您的问题。