[英]The “Angular” way of testing a component
在角度1中,如果我编写了一个组件,请确保:
expect(service.method).toHaveBeenCalled()
我一直在做一些有关Angular 2组件测试的研究,对于我能找到的所有文章,似乎测试都是按照以下步骤进行的;
<div>Test Quote</div>
)。 这是此类文章的一些示例(基本上是Google上“ Angular 2 Component Testing”的最佳搜索结果)
由于NG2在其测试框架@angular/core/testing
未提供任何间谍程序,因此建议完全避免使用粗体的步骤吗? 还是我们应该包括茉莉花才能获得间谍?
如果您专门要测试组件渲染,则可以按照问题中提到的博客中的说明使用TestComponentBuilder
。
describe('MyComponent', () => {
it('should render list', async(inject([TestComponentBuilder], (tcb: TestComponentBuilder) => {
return tcb.createAsync(MyComponent).then((componentFixture: ComponentFixture) => {
const element = componentFixture.nativeElement;
//... get the element you want to check
componentFixture.detectChanges();
expect(element).toHaveText('test div');
expect(element.querySelectorAll('div').length).toBe(1);
});
}));
}));
如果要在组件中调用服务,则需要inject
beforeEachProviders()
或beforeEach()
方法,例如:
beforeEach(() => {
addProviders([
provide(LoginService, { useClass: MockLoginService }),
UserService
]);
});
当您要在组件中模拟服务调用时,将jasmine
间谍程序与诸如and.callThrough
和and.returnValue
类的方法一起使用非常有用。 另外,看看这个回购的角度团队成员朱莉raplh。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.