我想写一个测试来模拟 reactjs 中的承诺
我只需要一个 getHeaders(( 的模拟实现来返回一个字符串
export const loadAllProjects = () => {
return (dispatch) => {
getHeaders()
.then(headers => {
...do stuff
})
}
}
澄清我原来的功能是...
export const loadAllProjects = () => {
return (dispatch) => {
...do stuff
}
}
。我的测试是...
it('should create SET_ALL_PROJECTS action when fetching projects', () => {
fetchMock
.getOnce('http://test.projects.api/api/projects',
{
body: [{name: "x"}],
headers: { 'content-type': 'application/json' }
}).spy()
const expectedActions = [
{ type: "SET_ALL_PROJECTS", json: [{name:"x"}] },
]
checkAsyncActionsWereDispatched(expectedActions, actions.loadAllProjects)
});
我希望测试与模拟标头一起使用
const getHeaders = () => {
return new Promise((resolve, reject) => {
resolve("some string");
});
};
a = await getHeaders(); //some string
使用Promise.resolve
return Promise.resolve("your headers here");
你可以用笑话来模拟测试的承诺
最终完成的示例:
const mockPostSpy = jest
.spyOn(axios, 'post')
.mockImplementation(() => {
return new Promise((resolve) => {
return resolve({
data: {},
});
});
});
操作失败的示例:
const mockPostSpy = jest
.spyOn(axios, 'post')
.mockImplementation(() => {
return new Promise((resolve) => {
return reject({});
});
});
祝你好运^^