【发布时间】:2020-05-09 13:52:13
【问题描述】:
我正在使用Jest 和moxios 为我的异步函数编写测试:
export function getData(id) {
return dispatch => {
return axios({
method: "get",
url: `${'url'}/id`
})
.then(response => {
dispatch(setData(response.data));
})
.catch(() => alert('Could not fetch data');
};
}
测试:
import configureMockStore from "redux-mock-store";
import thunk from "redux-thunk";
import moxios from "moxios";
import getData from '../redux/getData';
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);
const store = mockStore({});
describe('Test fetch data', () => {
beforeEach(function() {
moxios.install();
store.clearActions();
});
afterEach(function() {
moxios.uninstall();
});
it('should fetch data and set it', () => {
const data = [{ name: 'John', profession: 'developer'}];
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: data
});
const expectedActions = [setData(data)];
return store.dispatch(getData()).then(() => {
expect(store.getActions()).toEqual(expectedActions);
});
});
})
})
我的测试通过了,但是当我检查 Jest 生成的代码覆盖率报告时,它显示 getData 的 then 块没有被覆盖/调用。我该如何解决这个问题?
【问题讨论】:
-
它是给你一个错误还是什么都没有?顺便说一句,check this question 可能对你有帮助:)
标签: javascript jestjs moxios