【发布时间】:2021-12-05 13:01:58
【问题描述】:
我有一个从目录解压缩文件的功能。它工作正常
index.js
const unZip = async (zipFilePath, destDir) => {
await util.promisify(fs.mkdir)(destDir);
return new Promise((resolve, reject) => {
fs.createReadStream(zipFilePath)
.pipe(unzipper.Extract({ path: destDir }))
.on("close", () => resolve(destDir))
.on("error", (err) => {
console.log("Error inside unzip", err);
reject(err);
});
});
};
但是对于单元测试,我使用sinon 和ava,我无法通过测试用例
这是代码
index.test.js
ava.beforeEach(() => {
// mockFs({
// 'fakeDir/fakeFile': mockFs.load('test/helpers/file/testFile.txt'),
// fakeFileContent: 'content here',
// });
sinon.stub(mockFs, 'createReadStream').returns({
pipe: sinon.stub().returns({
on: sinon.stub().returns({
on: sinon.stub().returns(),
}),
}),
});
});
ava.serial('unZip test', async (t) => {
const unzip = proxyquire('../../../src/helpers/file/unZip', {
fs: mockFs,
util: {},
unzipper: { Extract: () => Buffer.from([8, 6, 7, 5, 3, 0, 9]) },
});
const result = await unzip('fakeFileContent', 'fakeFileContent');
t.is(result, true);
});
它给了我这样的错误
unZip test
Rejected promise returned by test. Reason:
Error {
code: 'EEXIST',
errno: -17,
path: 'fakeFileContent',
syscall: 'mkdir',
message: 'EEXIST: file already exists, mkdir \'fakeFileContent\'',
}
【问题讨论】:
标签: javascript node.js unit-testing sinon ava