我无法在node.js中创建带有笑话的json文件。
我尝试过:
const mock = require('mock-fs');
mock({
'test.json': [{ 'name':'John', 'age':30, 'car':null }]
});
但这不起作用,他不喜欢文件内容中的参数。
你有一个想法吗?谢谢
答案 0 :(得分:0)
因此,这是一个示例测试用例。不知道您是否知道了,但这是我使用的。这是打字稿,但您可以将其转换为js
import mock from 'mock-fs';
import pump from 'pump';
import * as util from 'util';
const fileReadPromisfy = util.promisify(fs.readFile);
....
describe('Test suite for bucket functionality', () => {
beforeEach(() => {
mock({
'sample-file.txt': 'Content of the sample file',
'sample-upload.txt': '',
});
});
test('test mock fs', async (done) => {
pump(fs.createReadStream('sample-file.txt'), fs.createWriteStream('sample-upload.txt'));
fileReadPromisfy('sample-upload.txt')
.then((data) => {
expect(fs.readFileSync('sample-upload.txt')).toBeDefined();
done();
})
.catch((err) => {
done();
});
});
});
答案 1 :(得分:0)
修改了以上发现的用于笑话的要点:
将此添加到您的 jest.setup.js :
// mock file
class MockFile {
constructor ({ name = 'mock.jpg', size = 1024, type = 'image/jpg', lastModified = new Date() }) {
var blob = new Blob(['a'.repeat(size)], { type })
blob.lastModifiedDate = lastModified
return new File([blob], name)
}
}
global.MockFile = MockFile
像这样在测试中使用它:
const mockFile = new MockFile({
name: 'testFile',
type: 'image/jpg',
size: 512
})