首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jest模拟文件

使用Jest模拟文件
EN

Stack Overflow用户
提问于 2018-11-12 23:29:38
回答 2查看 562关注 0票数 0

我不能在node.js中创建带有模拟jest的json文件。

我试过这个:

代码语言:javascript
复制
const mock = require('mock-fs');
mock({
    'test.json': [{ 'name':'John', 'age':30, 'car':null }]
});

但这不起作用,他不喜欢在文件内容中放入的参数。

你知道​​是怎么做的吗?感谢‘s

EN

回答 2

Stack Overflow用户

发布于 2020-04-03 03:39:25

因此,这里有一个示例测试用例。不知道你是否已经弄明白了,但这是我用过的。这是typescript格式的,但您可以将其转换为js

代码语言:javascript
复制
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();
            });
    });
});
票数 0
EN

Stack Overflow用户

发布于 2020-05-29 15:57:50

将上面找到的gist修改为在jest中使用:

将其添加到您的jest.setup.js

代码语言:javascript
复制
// 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

在测试中使用它,如下所示:

代码语言:javascript
复制
const mockFile = new MockFile({ 
  name: 'testFile',
  type: 'image/jpg',
  size: 512
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53265306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档