angular - Jasmine 中带有 target.value 的调度事件
问题描述
如何change
Event
在 Jasmine 单元测试中分派一个包含target.value
?
被测组件有这样一个方法:
@HostListener('change', ['$event'])
onChange(event) {
const value = event.target.value;
this.value = value;
}
请参阅TODO
我当前的单元测试草案。我需要target.value
在调度事件时包含,但Event
界面似乎不包含target
属性。
scenarios.forEach((scenario) => {
it(`changing control value should result in correct value ${scenario.condition}`, fakeAsync(() => {
// arrange
component.writeValue(scenario.writtenControlValue);
// act
fixture.detectChanges();
fixture.whenStable().then(() => {
const input = fixture.debugElement.query(By.css('input')).nativeElement;
input.value = scenario.newControlValue;
input.dispatchEvent(new Event('change')); // TODO: pass scenario.newControlValue to Event's target.value
// assert
expect(component.value).toEqual(scenario.expectedResult);
});
}));
});
解决方案
看看这个链接,也许你可以使用triggerEventHandler
。
scenarios.forEach((scenario) => {
it(`changing control value should result in correct value ${scenario.condition}`, fakeAsync(() => {
// arrange
component.writeValue(scenario.writtenControlValue);
// act
fixture.detectChanges();
fixture.whenStable().then(() => {
const input = fixture.debugElement.query(By.css('input'));
input.nativeElement.value = scenario.newControlValue;
input.triggerEventHandler('change', { target: input.nativeElement });
// assert
expect(component.value).toEqual(scenario.expectedResult);
});
}));
});
我也使用此链接作为指南
推荐阅读
- python - 将 cmd 命令的过滤输出存储在变量中
- excel - 如果匹配一个单元格中的两个文本,则求和值
- java - REST API 的 JSON 响应
- azure - 带有 bot 扩展名的 Azure CLI 状态代码的含义
- angular - 表单输入字段中的 ngModule 是什么
- nginx - 页面部分具有特殊字符(#)的 Nginx 重写 URL 规则
- ssis - ssis用空字符串替换null
- javascript - 打印窗口 - 失去对父页面的控制
- woocommerce - 如何在 woocommerce 中添加多个选项卡?
- javascript - 如何遍历文本并替换特定单词