在业力和茉莉花中运行测试时,为什么fs.readFile不是函数?

时间:2018-07-03 07:00:52

标签: javascript node.js unit-testing karma-jasmine

我有一个必须找到文件(.zip)并将其返回的函数,我可以将其用作另一个函数的参数。另外,我在业力/茉莉花中进行了测试,我在其中午餐了我的搜索功能,当我这样做时,它抛出了一个错误,'fs.readFile is not a function'
测试代码:

const fs = require('fs');
const JSZip = require("jszip");

const searchfile = () => {


fs.readFile('./data/2-11253540.zip', function (err, data) {
    if (err) throw err;
    JSZip.loadAsync(data).then(function (zip) {
        console.log('Process Zip: ', zip);
    });
});
};

describe('Process', () => {

const process = require('./process');
searchfile();
it('001', () => expect(process()).toEqual(null));

});

它看起来与我上面描述的不太相似,但是它是一个测试版本,用于检查它是否有效。在我的业力配置中,我使用browserify来处理需求。

因此, searchfile 函数搜索文件,而 process 函数将使用该文件。运行此测试时,出现错误,提示 fs.readFile不是函数。 但是,如果我在 process 函数中放入了 searchfile 的代码并直接运行它,就可以正常工作。

为什么不起作用?

1 个答案:

答案 0 :(得分:3)

查看屏幕快照中的最后两行绿色文本(为什么要发布文本图片?!)。

您正在Chrome中运行测试。

fs模块是Node.js功能。

fs模块在Chrome中不可用(如果网页可以从访问者的文件系统中读取任意文件,那将很愚蠢)。