大佬教程收集整理的这篇文章主要介绍了单元测试 – angular2单元测试:如何使用triggerEventHandler测试事件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
现在我想触发一个click事件来测试名称值是否为bar.请参阅plunker上的unit-tesTing.spec.ts文件.
it('should change name from foo to bar on click event',inject([],() => { return builder.createAsync(UnitTesTingComponentTESTController) .then((fixture: ComponentFixture<any>) => { let query = fixture.debugElement.query(By.directive(UnitTesTingComponent)); expect(query).toBeTruthy(); expect(query.componenTinstancE).toBeTruthy(); // fixture.detectChanges(); expect(query.componenTinstance.Name).toBe('foo'); query.triggerEventHandler('click',{}); expect(query.componenTinstance.Name).toBe('bar'); // fixture.detectChanges(); }); }));
这是UnitTesTingComponentTESTController
@Component({ SELEctor: 'test',template: ` <app-unit-tesTing></app-unit-tesTing> `,directives: [UnitTesTingComponent] }) class UnitTesTingComponentTESTController { }
此测试失败并显示以下消息:
Expected 'foo' to be 'bar'.
triggerEventHandler(eventName: String,eventObj: any): void;
我的问题是如何触发事件并使用angular2进行测试.
一个解决方案可能是在componenTinstance上调用onClick()方法,但在这种情况下我们只测试类的内部而不是组件行为
<div class="my-class" (click)="onClick()"> <ul id="my-id"> <li></li> <li></li> </ul> </div>
你可以使用fixture.nativeElement.querySELEctor(< your SELEctor>).click()触发所选元素的点击事件.这种方法调用javascript click()函数(见this)
您可以根据其id,类或路径(xpath?)选择元素.例如:
fixture.nativeElement.querySELEctor('.my-class').click()
要么
fixture.nativeElement.querySELEctor('#my-id').click()
要么
fixture.nativeElement.querySELEctor('div>ul>li').click()
以上是大佬教程为你收集整理的单元测试 – angular2单元测试:如何使用triggerEventHandler测试事件全部内容,希望文章能够帮你解决单元测试 – angular2单元测试:如何使用triggerEventHandler测试事件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。