假设我有两个Redux形式转换函数,如下所示:
const fetchUser = () => {
return dispatch => {
return fetch('/my-user-endpoint').then(res => {
dispatch(updateUserInfo(res))
})
}
}
const fetchSomethingElse = () => {
return dispatch => {
return fetch('/my-other-endpoint').then(res => {
dispatch(updateOtherInfo(res))
})
}
}
然后是一个公开的函数,它使用Promise.all
将提取调用捆绑在一起。
export const doSomething = () => {
return dispatch => {
dispatch(firstDoThis())
dispatch(thenDoThis())
const fetches = [dispatch(fetchUserInfo()), dispatch(fetchSomethingElse())]
return Promise.all(fetches).then(() => {
dispatch(finallyDoThis())
})
}
}
在尝试测试时,我会执行以下操作:
it('Test', async () => {
await doSomething()(dispatchMock)
expect(dispatchMock).toHaveBeenCalledTimes(5)
})
相反,我只得到了3个调度而不是5个。我将如何测试Promise.all
中的Redux thunk调度是否被执行?
1条答案
按热度按时间tp5buhyn1#
在你的第三个功能中-
doSomething = dispatch => ... <returnValue>
,被称为doSomething()(dispatchMock)
1.其将x1M2 N1 x绑定到x1M3 N1 x并调用x1M4 N1 x。
那么,什么是
returnValue
?returnValue
是doSomething()
的结果1.也就是
Promise.all(fetches)...
所以...类型不匹配-
returnValue(dispatchMock)
表示“使用此参数dispatchMock
调用函数returnValue
1.但是
returnValue
是一个承诺,而不是一个函数。也许你的意思是-