首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角质材料自动完成:测试事件

角质材料自动完成:测试事件
EN

Stack Overflow用户
提问于 2018-08-22 18:22:07
回答 2查看 2.3K关注 0票数 5

如何测试角质材料自动完成的事件?我正在尝试测试这段代码,并想知道如何将event参数传递给方法:

代码语言:javascript
复制
onOptionSelect(event: MatAutocompleteSelectedEvent) {
  this.selectedOption = event.option.value;
}

编辑:为了澄清,我想知道如何模拟一个MatAutocompleteSelectedEvent类型的事件,以便在测试中将它传递给我的方法。

EN

回答 2

Stack Overflow用户

发布于 2021-01-27 14:26:59

与创建整个事件对象不同,您只能创建一个普通对象,其值仅为测试所需,并使用 as 关键字通知编译器将该对象视为MatAutocompleteSelectedEvent。

代码语言:javascript
复制
// given
const newValue = 'something';
const event: MatAutocompleteSelectedEvent = {
  option: {
    value: newValue
  }
} as MatAutocompleteSelectedEvent;
// when
component.onSelect(event);
// then
expect(component.selectedOption).toEqual(newValue);
票数 3
EN

Stack Overflow用户

发布于 2018-08-23 15:45:06

有几个选择。可以直接从测试中调用该方法,也可以使用DebugElement.triggerEventHandler触发该方法。在这两种情况下,您都需要自己创建事件对象或模拟它,并测试预期的结果。

如果您想要强制手动选择,例如打开列表并在其中一个选项上生成单击事件,我认为这是不可能的(我已经尝试并搜索到没有效果--如果有人知道怎么做,请发布答案)。可以说,这是没有必要的,因为除了确保MatAutocomplete正确地选择之外,它没有完成任何以上的方法,而且您不需要测试该IMO。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51972969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档