【发布时间】:2020-05-31 01:49:30
【问题描述】:
我正在尝试test我的服务,它具有一个功能saveWithoutSubmit
export const saveWithoutSubmit = async (
values,
orderId,
taskId,
fseMsisdn,
updateTaskListAfterFilter
) => {
var obj = {
remarks: values.remarks,
requestedBy: localStorage.getItem("msisdn")
};
try {
const response = await sendPostRequest(`${API_TASK_URL}closeSr`, {
...obj,
saveWithoutSubmit: true
});
if (response && response.data && response.data.status.code !== "200") {
error(response.data.result.message);
} else {
console.log(response);
success(response.data.status.message);
updateTaskListAfterFilter();
}
} catch (e) {
if (e.response && e.response.data) {
console.log(e.response.data.message);
error(e.response.data.status.message);
}
}
};
我想检查success 或error 方法是否被调用?或updateTaskListAfterFilter 是否被调用?
我试过这样
https://codesandbox.io/s/ecstatic-currying-5q1b8
describe("remark service test", () => {
const fakeAxios = {
get: jest.fn(() => Promise.resolve({ data: { greeting: "hello there" } }))
};
it("save without sumit", () => {
const updateTaskListAfterFilter = () => {};
saveWithoutSubmit({}, updateTaskListAfterFilter);
expect(updateTaskListAfterFilter).toBeCalled();
});
});
您能否建议我将如何测试 async 方法或发布请求(使用 mook 数据)?
这样我的测试用例就会通过。 我想检查我是否从 promise 中获得了成功,我的成功方法将被称为 else 错误
任何更新?..!!
更新
https://codesandbox.io/s/ecstatic-currying-5q1b8
it("save without sumit", async () => {
const sendPostRequest = jest.fn(() =>
Promise.resolve({ data: { greeting: "hello there" } })
);
const updateTaskListAfterFilter = () => {};
saveWithoutSubmit({}, updateTaskListAfterFilter);
expect(updateTaskListAfterFilter).toBeCalled();
});
it("save without sumit", async () => {
const sendPostRequest = jest.fn(() =>
Promise.resolve({ data: { greeting: "hello there" } })
);
const mockUpdateTaskListAfterFilter = jest.fn();
const updateTaskListAfterFilter = () => {};
saveWithoutSubmit({}, updateTaskListAfterFilter);
expect(updateTaskListAfterFilter).toBeCalled();
await wait(() => {
expect(mockUpdateTaskListAfterFilter).toBeCalled();
});
});
【问题讨论】:
-
您看过 Jest Testing Asynchronous Code 文档了吗?它解释了如何在测试中使用.then 或更好的async/await。
-
@David784 如果您更改我的代码沙箱会很棒
-
任何更新?..!!
-
这能回答你的问题吗? Jest mock async calls inside react component
-
@frodo2975 不,我只是在测试一个有一个 http 调用的函数
标签: javascript reactjs jestjs jest-mock-axios