我在这个主题上卡了3小时。 我找不到如何测试此代码中的if(err)分支的解决方案:
function createFile(data){
return new Promise(function(resolve, reject) {
try {
if(data === null || data === undefined){
throw new Error(errorMessages.noDataDefined);
}
let internalJobId = uuid.v4();
let fileName = 'project_name' + internalJobId + '.xml';
fs.writeFile(config.tmpPath + fileName, data, function (err) {
if (err){
throw new Error(err.toString());
} else {
resolve(fileName);
}
});
} catch (error) {
return reject(error);
}
});
这个测试通过了,但它并没有调用if (err) { throw new Error(err.toString())}。
我必须找到一个解决方案,让回调返回一个错误,但是我还没有得到正确的解决方案。
test('Error', () => {
jest.mock('fs', () => ({
writeFile: jest.fn((path, data, callback) => callback(Error('some error')))
}));
return expect(createFile('Does not matter')).rejects.toThrow('some error');
});
但是在这个测试中,甚至没有出现拒绝的情况,因此从未抛出错误。如果有人能帮我解决问题,我将不胜感激。