既存の角度(バージョン4.3.3)アプリケーションにngrx/store(バージョン4.0.3)を実装する必要があります。angular/ngrx store 4:コンポーネントテストで状態を初期化しない
ため、私はこのエラーメッセージのコンポーネントをテストするために問題を抱えて:私は実装が簡単なはずと思ったこの文書Providing Store for testingを読んだ後
TypeError: undefined is not an object (evaluating 'state.search.results')
を。私のspecファイルで
私はbeforeEach方法でStoreModuleをインポート:
StoreModule.forRoot ({reducers}),
...
store = TestBed.get (Store);
spyOn (store, 'dispatch').and.callThrough();
減速は次のようになります。
import * as fromSearch from './search/search-reducer';
export interface State {
search: fromSearch.State;
}
export const reducers = {
search: fromSearch.reducer
};
、ここで検索 - 減速:
export interface State {
searchTerms: string;
results: [];
limit: SearchLimit;
}
// Imported: initialState & initalSearchLimitState
const initialState: State = {
searchTerms: '',
results: [initialState],
limit: initalSearchLimitState
};
export function reducer (state = initialState, action: SearchActions.All): State {
switch (action.type) {
case SearchActions.SEARCH: {
return {
...state,
searchTerm: action.payload
};
}
case SearchActions.SEARCH_SUCCESS: {
return {
...state,
results: action.payload
};
}
case SearchActions.SEARCH_LIMIT_EXCEEDED: {
return {
...state,
limit: action.payload
};
}
default: {
return state;
}
}
}
コンポーネントIのメソッドでは、特定のアクションを検索サービスメソッド(HTTP reクエスト):
this._searchService.search (query).subscribe (results => {
this._store.dispatch (new SearchActions.SearchSuccess (results.data));
});
検索サービスはモックサービスです。
このサイトで多くの回答を読んだあと、beforeEachメソッドで特定のアクションをディスパッチしてstate.search.results
状態を初期化しようとしました。しかし、私は同じエラーメッセージを受け取りました。
この状態の問題を解決するにはどうすればよいですか?
ありがとうございます。