【发布时间】:2020-06-24 12:34:17
【问题描述】:
我正在尝试测试这个功能
const handleSave = () => {
const cveIds = cveList.map(item => item.id);
return setCveStatus({
status_id: parseInt(statusId),
cve: cveIds,
status_text: justification
})
.then(() => !checkboxState && setSystemCveStatus({ cve: cveIds }))
.then(updateRef);
};
调用我正在模拟的 2 个函数 setCveStatus 和 setSystemCveStatus
const setCveStatusMock = jest.fn(parameters => new Promise(resolve => resolve(parameters)));
const setSystemCveStatusMock = jest.fn(parameters => new Promise(resolve => resolve(parameters)));
deps.setCveStatus = setCveStatusMock;
deps.setSystemCveStatus = setSystemCveStatusMock;
并测试它们的名称
expect(setCveStatusMock).toBeCalledWith({
status_id: 3,
status_text: 'new',
cve: ['CVE-2020-0001']
});
expect(setSystemCveStatusMock).toBeCalledWith({
cve: ['CVE-2020-0001']
});
但是第二个期望失败了,即使它不应该有。 如何模拟和测试 .then() 内部调用的函数?
【问题讨论】:
-
你能说明你在测试中是如何调用
handleSave()的吗?
标签: javascript reactjs asynchronous testing jestjs