我正在为异步操作创建者编写测试,但是运行测试时出现超时错误。我尝试过
我目前正在再次尝试Moxios。
myTest(编辑以反映更改):
import configureMockStore from 'redux-mock-store'
import thunk from 'redux-thunk'
import moxios from 'moxios'
import * as actions from './actions'
import mockData from './mockData'
const middleware = [thunk]
const mockStore = configMockStore(middleware)
describe('action tests: ', () => {
beforeEach(function() {
moxios.install()
}
afterEach(function() {
moxios.uninstall()
}
it('should get data', async done => {
moxios.stubRequest('/data/*', { status: 201, response: mockData })
const expectedActions = [{ type: actions.dataActions.RECEIVED_DATA }]
const store = mockStore({ data: [] })
await store.dispatch(actions.getData()).then(() => {
expect(store.getActions()).toEqual(expectedActions)
})
done();
}, 10000)
})
我遇到的错误是:Timeout - Async callback was not invoked within the 10000ms timeout...
通过查看我的代码和覆盖范围,我可以看到诺言没有被使用,因为.then()部分没有根据我的代码覆盖范围得到执行。那么我的测试用例做错了吗?我一直在开玩笑地看着其他人对Axios的实现,但是我总是遇到这个超时错误。
正在测试的代码:
export cosnt getData= () => {
return dispatch => {
dispatch(isFetching())
return dataApi.retrieveData().then(res => {
dispatch(updateData(res))
})
}
}
答案 0 :(得分:0)
我注意到有两件事可能导致此错误:
URL通配符在stubRequest
中无法正常工作,您应指定uri的一部分或全部(为外部api端点添加主机名)。
例如moxios.stubRequest('/data/*', { status: 201, response: mockData })
resolves
不应该在那里,因为上面的.then
已经兑现了承诺。
更新后应该是:
expect(store.getActions()).toEqual(expectedActions)
我有一个类似于此测试用例的沙箱: https://codesandbox.io/s/react-and-redux-thunk-49696
您可以引用文件redux.spec.js
。希望对您有所帮助。