angular - 将模拟 DOM 事件传递给 Angular 中的组件方法以进行单元测试
问题描述
我正在尝试在我的一个组件中测试一种方法,如下所示:
toggle(event: Event): void {
event.stopPropagation();
this.isCollapsed = !this.isCollapsed;
}
我找不到将事件对象传递给单元测试用例中的方法的方法,例如:
test('it should call stop propagation when toggled', () => {
testHostComponent.toggleLineBreakDown(mockEventGoesHere, 0);
});
解决方案
您可以测试是否已通过 Jasmine Spy 调用了 preventDefault。
在使用 SpyOn 方法之前,您必须创建您正在收听的事件。(在以下示例中,它是一个“点击”事件)。创建事件和间谍后,您需要将事件分派给元素。
举个例子:
const event = new MouseEvent('click');
spyOn(event, 'preventDefault');
element.dispatchEvent(event);
expect(event.preventDefault).toHaveBeenCalled();
希望这会有所帮助!
推荐阅读
- html - 如何使我的剑道树视图 div 可滚动且不展开
- python - 将大型scipy稀疏矩阵的多行多列设置为0s
- python - pip3 psutil 无法安装较新版本
- java - 按 TimeStamp 升序排列 Firestore 数据
- python - 从 Bittrex 解析 JSON
- jhipster - JHipster:为什么会为 --skip-client 标志生成 node_modules 和其他前端文件?
- uiviewcontroller - How to send data from AppDelegate to my subclass of ViewController in swift 4
- asp.net-mvc - 为生产设置 compliation debug = false
- objective-c - What is the Objective-c equivalent of the Swift customAnnotation.coordinateMode = .relativeY
- sql - Use field values inside a Where statement