コンポーネントを単体テストしたい。私は@ 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 }
]
})
詳細を知りたい場合は教えてください。前もって感謝します。
あなたの答えをありがとう。あなたがやっているやり方でやってみましたが、まだエラーがありました...私が他の答えで言ったように、私はすでにサブスクリプションオブジェクトに対して自分のサブスクリプションを呼び出しています。 – Megan