Flo*_*geb 5 unit-testing observable jasmine angular
例如,我的组件中有私有类成员
private querySubscription: Subscription;。
在我的ngOnDestroy()订阅中取消订阅:
ngOnDestroy(): void {
this.querySubscription.unsubscribe();
this.userSettingsSubscription.unsubscribe();
}
如何在茉莉花单元测试中测试我是否确实正确取消订阅?我可以以编程方式调用,ngOnDestory()因为它是公共的,但我无法测试我的私有类成员。
Mac*_*c_W -1
如果您使用的是 Typescript,并且我想您要在设置 testBed 时测试测试模块中的私有成员,则必须使用注入器调用您的服务。
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
YourService,
],
imports: [ HttpClientTestingModule ],
});
const injector = getTestBed();
service = injector.get(YourService);
});
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用 访问您的服务公共方法,service.myMethod并使用 访问您的私有方法(service as any).privateMethod()。
由于 Typescript 始终编译为 JavaScript,并且在 JavaScript 中,您没有公共私有成员,因此您必须使用该(service as any)构造。
编辑1
在您能够访问私有之后,您可以访问它的属性,因此您接下来要做的是(以伪代码形式):
spyOn((service as any).privateMethod, 'setBar');
service.ngOnDestroy()
expect((service as any).privateMethod.setBar).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7798 次 |
| 最近记录: |