首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角/ ngrx存储4:在组件测试中未初始化状态

角/ ngrx存储4:在组件测试中未初始化状态
EN

Stack Overflow用户
提问于 2017-09-28 19:06:59
回答 1查看 1.4K关注 0票数 1

我必须在现有的角(4.3.3版)应用程序中实现ngrx/store (版本4.0.3)。

由于以下错误消息,我在测试组件时遇到了问题:

代码语言:javascript
复制
TypeError: undefined is not an object (evaluating 'state.search.results')

在阅读了本文档为测试提供存储库之后,我认为实现应该很容易。

在我的规范文件中,我在StoreModule方法中导入了beforeEach:

代码语言:javascript
复制
StoreModule.forRoot ({reducers}),
...
store = TestBed.get (Store);
spyOn (store, 'dispatch').and.callThrough ();

减速机看起来是:

代码语言:javascript
复制
import * as fromSearch from './search/search-reducer';
export interface State {
  search: fromSearch.State;
}

export const reducers = {
  search: fromSearch.reducer
};

在这里,搜索减法器:

代码语言:javascript
复制
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;
    }
  }
}

在组件的方法中,我在搜索服务方法(HTTP请求)的订阅中分派特定的操作:

代码语言:javascript
复制
this._searchService.search (query).subscribe (results => {
    this._store.dispatch (new SearchActions.SearchSuccess (results.data));
});

在规范文件中,搜索服务是一个模拟服务。

在阅读了这个站点上的许多答案之后,我尝试在beforeEach方法中分配特定的操作来初始化state.search.results状态。但我也收到了同样的错误信息。

我该如何解决这个状态问题?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-01 13:02:41

我找到了解决问题的办法。

我换了减速机

代码语言:javascript
复制
export const reducers

代码语言:javascript
复制
export const reducers: ActionReducerMap<State>

此外,我在beforeEach方法的导入数组中添加了初始状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46476589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档