我想单元测试一个组件。我正在使用@ ngrx/store和rxjs为了从我的组件更新我的商店。为此,我订阅并取消订阅商店。 我的单元测试与如何模拟@ ngrx/store?
TypeError: undefined is not an object (evaluating '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 }
]
})
如果您需要更多信息,告诉我。提前致谢。
感谢您的回答。我尝试了你的方式,仍然有错误...正如我在其他答案中所说的,我已经在Subscription对象上调用了我的退订。 – Megan