[英]How to resolve promise from a mocked callback function in jest
我是開玩笑的新手,並試圖了解模擬是如何工作的。 我無法弄清楚如何從模擬模塊 function 中解析實際的 promise。 我有一個簡單的數據接口模塊,如下圖
const fs = require('fs');
const path = require('path');
function loadData(fileName){
let promise = new Promise((resolve, reject) => {
fs.readFile(path.join(__dirname, `/${fileName}`), (err, data) => {
if (err) {
console.error(err)
reject(err);
}
data = data.toString();
try{
data = JSON.parse(data);
}
catch(err){
console.error(err)
reject(new Error('Error while parsing json'))
}
resolve(data);
})
})
return promise;
}
模塊的測試文件看起來像
jest.mock('fs');
const fs = require('fs');
const DI = require('./../data/data_interface');
describe('data loading functionality',() => {
test('load data opens file system',async () => {
try {
expect.assertions(1);
let fileName = 'expenses.json';
await DI.loadData(fileName);
expect(fs.readFile.mock.calls.length).toBe(1);
}
catch(err){
throw(err);
}
})
})
當我運行上述測試時,出現超時錯誤,這似乎是因為模擬無法解析 promise。 如何從提供的模擬中解析 promise?
您應該在測試中刪除異步等待
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.