1

在 Redux 的编写测试部分中,如果字面意思是调用,store.dispatch(actions.fetchTodos())不调用方法是如何实现的?fetchstore.dispatchactions.fetchTodos

it('creates FETCH_TODOS_SUCCESS when fetching todos has been done', (done) => {
    nock('http://example.com/')
      .get('/todos')
      .reply(200, { todos: ['do something'] })

    const expectedActions = [
      { type: types.FETCH_TODOS_REQUEST },
      { type: types.FETCH_TODOS_SUCCESS, body: { todos: ['do something']  } }
    ]
    const store = mockStore({ todos: [] }, expectedActions, done)
    store.dispatch(actions.fetchTodos())
})
4

1 回答 1

2

它正在调用该fetch方法,但是该nock行:

nock('http://example.com/')
  .get('/todos')
  .reply(200, { todos: ['do something'] })

存根 HTTP 请求,以便fetch简单地返回正确的数据(而不实际到达端点)。

另一种选择是将调用提取fetch到另一个模块中——比如说api——并在你的动作创建器中使用它。在测试中,您只需在api模块上模拟出适当的方法。

于 2015-12-29T21:12:08.933 回答