【发布时间】:2020-06-16 21:36:06
【问题描述】:
我正在尝试测试以下功能:
async function read () {
return new Promise(function(resolve, reject) {
fs.readFile("INVALID_PATH", (err, contents) => {
if (err) {
reject(new Error('ERROR'));
}
resolve(contents);
});
});
}
通过测试:
try {
await read();
} catch (e) {
expect(e).toMatch('ERROR');
}
但是,我无法在 catch 时捕捉到拒绝,它让我超时。
有什么建议吗?
编辑:
我设法通过使用模拟使其工作,这样:
try {
fs.readFile.mockReset()
fs.readFile.mockImplementation((path, options, cb) => {
cb('ERROR')
})
await readFile()
} catch (err) {
expect(err).toBe('ERROR')
}
但是,我仍然不明白为什么这是必要的......
【问题讨论】:
-
新错误返回一个对象
-
是的,但无论返回什么新错误,我都应该在 catch 时捕获任何拒绝返回,在这种情况下我不能。
标签: javascript promise async-await jestjs fs