如何在Angular Material Autocomplete中测试事件?我正在尝试测试此代码,并想知道如何将event
参数传递给该方法:
onOptionSelect(event: MatAutocompleteSelectedEvent) {
this.selectedOption = event.option.value;
}
编辑:为澄清起见,我想知道如何模拟类型为MatAutocompleteSelectedEvent
的事件,以便可以将其传递给测试中的方法。
答案 0 :(得分:2)
不是创建整个 Event 对象,您可以只创建一个具有仅测试所需值的普通对象,并使用 as 关键字通知编译器将此对象视为 MatAutocompleteSelectedEvent 。>
// given
const newValue = 'something';
const event: MatAutocompleteSelectedEvent = {
option: {
value: newValue
}
} as MatAutocompleteSelectedEvent;
// when
component.onSelect(event);
// then
expect(component.selectedOption).toEqual(newValue);
答案 1 :(得分:1)
有两种选择。您可以直接从测试中调用该方法,也可以使用DebugElement.triggerEventHandler
触发该方法。在这两种情况下,您都需要自己创建事件对象或对其进行模拟并测试预期结果。
如果您实际上要强制进行手动选择,例如打开列表并在其中一个选项上生成单击事件,我认为这是不可能的(我尝试并搜索无济于事-如果有人知道如何,请发布答案)。可以说,这是没有必要的,因为除了确保MatAutocomplete正确地进行选择之外,它除了完成上述方法之一之外没有完成任何事情,而且您不必测试IMO。