在下面的代码中,我有一个函数根据提供的配置在文件系统中寻找文件。
正常工作。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
时,以下代码was
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'
。我试过将存根包装在promisify
中或将promisify
ed函数导出到测试中以存根。两者都不起作用。
如何存根promisify
ed fs
方法?
在下面的代码中,我具有一个函数,该函数根据提供的配置在文件系统中寻找文件。 const fs = require('fs'); const {promisify} = require('util'); const lstat = ...
您可以使用Link Seams和proxyquire程序包存根promisify
功能。