2017-06-05 10 views
1

をスパイするためにそれを割り当てる方法:ストアを取得し、私は2つのファイルを持っている変数

store$: Store<DogsStore>; 

constructor(private store: Store<DogsStore>) { 
    this.store$ = store; 
} 

x.component.tsをx.componentとx.service

x.service.ts

constructor(private xService: X) {} 

ngOnInit() { 
    this.xService.store$.select('something').subscribe(...) 
} 

テストx.componentcannot subscribe of undefinedというエラーが表示されます。 x.spec.tsでは私はあなたが私がstore$: Store<DogsStore> = new Store()ようなものを使用することはできませんので、私はそれを初期化できませんでした見ることができるように私は

store$: Store<DogsStore>; 

を持ってx.service.spy.tsを使用しています。ストアを取得して変数に割り当てるにはどうすればよいですか?多分それには別の問題がありますか?

答えて

1

私は右の質問を得た場合は、ここでそれを行う方法です:

基本的には、あなたのアプリケーションモジュールは、店を提供し、まだテストはしません。 (まだbeforeEach呼び出し中)

TestBed.configureTestingModule({ 
     imports: [ 
     SomeModule, 
     StoreModule.provideStore(reducer), // or your reducer name 
     .... 
     ], 
     .... 
    }); 

をし、それをスパイ:だから、あなたのspecファイルにbeforeEachの部分は、それをインポートして、それを提供する必要があり

spyOn(getTestBed().get(Store), 'dispatch').and.callThrough(); 

コンポーネントが取得されます。この道をそれ。今

あなたがテストでそれを注入する必要がありディスパッチラッパーへのアクセスを得るために:

it('test something', inject([Type1, Type2, Store], 
    (dep1: Type1, dep2: Type2, store) => { 
     expect(store.dispatch.calls.count()).toEqual(<count_value>); 
    } 

今すぐメソッドシグネチャで、私はそうでない場合、静的チェッカーはstore.dispatchを持っていると文句を言いますので、これは、型のない店を去ったことに注意してくださいメンバーなしcalls

関連する問題