我目前正在使用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 概念。