在下面的代码中,我有一个函数根据提供的配置在文件系统中查找文件。
const fs = require('fs');
const { promisify } = require('util');
const lstat = promisify(fs.lstat);
async function doSomething(someFilePath) {
try {
const stats = await lstat(someFilePath);
} catch (err) {
throw err;
}
// do something with the file stats
}
module.exports = doSomething;
从这里我试图测试该doSomething
功能,但它失败了,因为我提供的文件路径实际上并不存在。当我不lstatSync
使用promisify
.
const fs = require('fs');
const sinon = require('sinon');
const doSomething = require('./doSomething');
describe('The test', function() {
let lstatStub;
beforeEach(function() {
lstatStub = sinon.stub(fs, 'lstatSync');
});
afterEach(function() { sinon.restore() });
it('should pass', async function() {
lstatStub.withArgs('image.jpg').returns({
isFile: () => true,
isDirectory: () => false,
});
assert(await doSomething('image.jpg')).ok();
});
})
它现在失败了,因为Error: ENOENT: no such file or directory, lstat 'image.jpg'
. 我尝试将存根包装或将ed 函数promisify
导出到测试中以存根。promisify
两者都没有工作。
我如何存根一个promisify
edfs
方法?