angular - karma angular 2 应用程序中的单元测试事件

标签 angular events mocking karma-jasmine

我正在尝试使用 karma 对方法 abc(Event) 进行单元测试。我的 View 页面中有一个下拉菜单,其中有 4 个选项,更改后将触发 abc(Event) 方法。

这是我的 View 页面:

<div class="myClass">
<select (change)="abc($event)" id="my">
    <option value="one">One</option>
    <option value="two">Two</option>
    <option value="three">Three</option>
    <option value="four">Four</option>
</select>

我的 component.ts 文件包含方法 abc 的定义。

import {Component,OnInit} from '@angular/core';
import { LocaleService } from '../../../services/locale.service';
@Component({
selector: 'app-localeselector',
templateUrl: './localeselector.component.html',
styleUrls: ['./localeselector.component.scss']
})


export class LocaleselectorComponent implements OnInit{

 private localeService: any;
 private language;
 constructor() { }

 ngOnInit() { }

}

abc(ev: Event) {
    //something...
}
}

如何测试方法 abc?还有如何模拟 $event? 提前致谢。

最佳答案

谢谢,成功了!!! :) 我找到了解决方案。能够通过发送对象来模拟事件。

it('should work', () => {
    component.abc({ srcElement: { value: 'xyz' } });
    expect(someMethod.getValue()).toEqual('xyz');
});

我还将 component.ts 文件中的 abc 方法更改为

abc($event){
    //do something...
}

关于angular - karma angular 2 应用程序中的单元测试事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44067775/

相关文章:

angular - 直到 Observable 返回一些东西才显示?

javascript - 快速查找网页中事件背后的 JS 和 jQuery 代码和函数

python side_effect - 方法的模拟行为

node.js - 使用模拟模块在 Nodejs 中测试 Express Route

java - 在 Spring Boot 中使用 MockMvc 进行测试

javascript - DevExpress的DevExtreme for Angular2及预选

angular - mergeMap 中与 @ngrx 的并行操作?

html - Angular Material Flexbox

android - 如何为整个 Cordova 应用程序添加一个恢复事件?

ios - iOS OpenGL ES 2 中的黑屏/无事件