模拟fs readFileSync起作用,但readFile抛出

时间:2019-06-17 16:45:13

标签: javascript node.js testing mocha chai

我目前正在使用mock-fs测试在项目降价文件上运行的构建脚本。

// readIndex.test.js
it('should reject if index.json doesn\'t returns an object', done => {
   mock(_mocks['folder index exists'])
   const promise = readIndex('test')
   promise.should.be.rejectedWith('index not an object')
   mock.restore()
   done()
})

mock-fs 允许我将当前的文件层次结构立即替换为模拟的文件层次结构。

// _mocks/folderIndexExists/folderIndexExists.js
const mock = require('mock-fs')

module.exports = {
  'test': {
    'index.json': mock.file({
      content: '{ "valid": "true" }'
    })
  }
}

在此代码摘录中,您可以看到传入参数的文件树。

但这是我的问题::在检测文件夹中的index.json文件时,fs.readFile函数在其上引发了错误。

fs.readFileSync仍实现其目标。

// readIndex.js
fs.readdir('test', (err, files) => console.log(files))
// ['index.json']

fs.readFile('test/index.json', (err, data) => console.log(data))
// { Error: EISDIR: illegal operation on a directory, fstat errno: -4068, code: 'EISDIR', syscall: 'fstat' }

const data = fs.readFileSync('test/index.json')
console.log(JSON.parse(buffer.toString()))
// { valid: 'true' }

我怀疑我不会接受测试的某些 async 概念。

0 个答案:

没有答案