【发布时间】:2021-03-01 16:40:39
【问题描述】:
我的方法是:
getFilterData(filterFields, comparisons, filterValues) {
return new Promise((resolve) => {
axios.post('/projects/filter', {
filter_fields: filterFields,
comparisons,
filter_values: filterValues,
})
.then((response) => {
this.setState({
projectData: response.data,
isFilterModalOpen: false,
}, resolve(response));
})
.catch(this.handleRequestError);
});
}
我试着写一个测试:
describe('When getFilterData() is unsuccessful', () => {
it('calls handleRequestError', async () => {
axios.post.mockImplementation(() => Promise.reject(HREResponse));
const app = await global.shallowWithIntl(<ManageProjectsPage />).dive();
const spy = jest.spyOn(app.instance(), 'handleRequestError');
await app.instance().getFilterData(['language'], ['='], ['Java'])
.catch(error => expect(error).toBe(HREResponse));
console.log(app.instance().state);
app.update();
expect(spy).toHaveBeenCalled();
spy.mockRestore();
});
axios.post.mockReset();
});
错误说,预期的模拟函数已被调用,但没有被调用。 更多详情:
- 过滤器被定义为 post 方法。
- HREResponse 的状态为 504,即 handleRequestError 接收到的状态。
【问题讨论】:
-
shallowWithIntl来自哪里?您使用哪个库?
标签: javascript reactjs jestjs axios