- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为指令(在输入事件上调用)编写单元测试,该指令正在修改 formControl 上的输入值。我在我的规范文件中为此创建了一个测试组件。我注意到 triggerEventHandler() 和 dispatchEvent() 之间的区别,当 dispatchEvent() 正确触发事件并触发指令时,在 triggerEventHandler() 事件未触发的情况下。谁能告诉我,除了在 nativeElement 上调用 dispatchEvent() 之外,它们之间有什么区别。
// directive
export class AlphaNumericCheckDirective {
constructor(private ctrl: NgControl) {
}
@HostListener('input')
onInputChange() {
const pattern = /[^0-9]/g;
const elVal = (this.ctrl.control as AbstractControl).value;
if (pattern.test(elVal)) {
const newVal = elVal.replace(pattern, '');
(this.ctrl.control as AbstractControl).setValue(newVal);
}
}
}
// relevant code of test
it('should allow only numerics', () => {
const fixture = TestBed.createComponent(TestComponent);
const inputEl = fixture.debugElement.query(By.css('input'));
(fixture.componentInstance.testGroup.get('testControl') as
AbstractControl).patchValue('12a');
inputEl.triggerEventHandler('input', null); // not triggering the directive
inputEl.nativeElement.dispatchEvent(new Event('input')); // triggering the directive
});
最佳答案
triggerEventHandler
属于 Angular 。 triggerEventHandler
仅当使用 Angular event bindings
在 native 元素上声明事件处理程序时才会调用它, @HostListener()
或 @Output
装饰者。dispatchEvvent
当我们通过 JS native APIs
定义事件时会派上用场,例如。 RxJS fromEvent
可观察等
我们甚至可以使用 dispatchEvent
在测试时模拟 Angular Material 组件的事件,如 triggerEventHandler
不会在那里工作,因为 Angular 不知道这些事件。
这是一篇非常有趣的文章,可以帮助您巧妙地理解差异https://netbasal.com/simulating-events-in-angular-unit-tests-5482618cd6c6
关于angular - 在使用 karma 的 Angular 单元测试中 dispatchEvent() 和 triggerEventHandler() 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446174/
您好,我正在使用 Angular5 Jasmine 编写单元测试用例。我正在尝试提交表格。我正在编写提交表单的单元测试用例。下面是我的表格。 Cancel 下面是我的 spe
我正在尝试使用 angular2 rc1 为 click 事件编写单元测试。我的组件使用 onClick() 方法处理点击事件,并将 name 字段从 bar 更改为 foo。看这个plunker .
我正在尝试测试在单击模态上的“关闭按钮”时模态组件中的 closeModal 函数是否正常工作,但是此测试显示我的按钮元素为空。我收到错误消息“无法读取 null 的属性‘triggerEventHa
我正在为指令(在输入事件上调用)编写单元测试,该指令正在修改 formControl 上的输入值。我在我的规范文件中为此创建了一个测试组件。我注意到 triggerEventHandler() 和 d
我是一名优秀的程序员,十分优秀!