【发布时间】:2017-08-30 02:43:50
【问题描述】:
我想对一个组件进行单元测试。我正在使用 @ngrx/store 和 rxjs 来从我的组件更新我的商店。为此,我订阅和取消订阅商店。 我的单元测试失败了
TypeError: undefined is not an object (evalating 'this.store.unsubscribe') in config/spec-bundle.js
我无法找到正确模拟我的商店及其事件发射器的方法。
以下是以下几行:
app.component.ts:
ngOnDestroy() {
// unsubscribe the observable
this.userStore.unsubscribe();
}
app.component.spec.ts:
我如何模拟商店:
export class MockStore extends Subject<fromRoot.State> implements Store <fromRoot.State> {}
我如何配置:
TestBed.configureTestingModule({
imports: [
FormsModule,
ReactiveFormsModule,
StoreModule.provideStore(reducer)
],
declarations: [LoginComponent],
providers: [
BaseRequestOptions,
MockBackend,
{ provide: AuthService, useValue: authServiceStub },
{ provide: LoginService, useValue: loginServiceStub },
{ provide: LoggerService, useValue: loggerServiceStub },
{
provide: Http, useFactory: (backend: ConnectionBackend,
defaultOptions: BaseRequestOptions) => {
return new Http(backend, defaultOptions);
}, deps: [MockBackend, BaseRequestOptions]
},
{ provide: Router, useClass: MockRouter }
]
})
如果您想了解更多信息,请告诉我。提前致谢。
【问题讨论】: