测试 redux thunk 异步操作给出未定义而不是承诺
Posted
技术标签:
【中文标题】测试 redux thunk 异步操作给出未定义而不是承诺【英文标题】:testing redux thunk async actions give undefined instead of promise 【发布时间】:2018-05-25 04:22:20 【问题描述】:我有一个创建动作的函数
export function dispatchAction (type, payload)
return dispatch =>
dispatch(type: type, payload: payload)
我正在为它写测试
import configureMockStore from 'redux-mock-store'
import thunk from 'redux-thunk'
import * as actions from './actions
const mockStore = configureMockStore([thunk])
const store = mockStore()
describe('dispatch action', () =>
it('should return action based on type and payload', () =>
const type = 'TEST'
const payload = 'payload'
return store.dispatch(actions.dispatchAction(type, payload)).then(()
=>
expect(store.getActions())
.toEqual(type, payload)
)
)
)
但我收到Cannot read property 'then' of undefined
的错误。
【问题讨论】:
什么是mockStore
。那个函数返回什么?
更新了新代码
【参考方案1】:
根据docs:
内部函数的任何返回值都可以作为 dispatch 本身的返回值。
您没有在dispatchAction
中返回任何内容,因此出现了错误消息。如果你想要一个Promise
,那么你必须返回一个Promise
。
【讨论】:
以上是关于测试 redux thunk 异步操作给出未定义而不是承诺的主要内容,如果未能解决你的问题,请参考以下文章
Redux-thunk 异步操作:使用自定义中间件进行异步操作
如何修复'动作必须是普通对象。使用自定义中间件进行异步操作。
redux-thunk:错误:动作必须是普通对象。使用自定义中间件进行异步操作