如何从mocha.opts文件中正确地要求模块

Mik*_*ain 9 javascript require mocha.js node.js gulp

我正在使用expect.js库和我的mocha单元测试.目前,我要求每个文件的第一行上的库,如下所示:

var expect = require('expect.js');

describe('something', function () {
    it('should pass', function () {
        expect(true).to.be(true); // works
    });
});
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想从每个文件的第一行删除样板需求代码,并让我的单元测试神奇地了解expect.我以为我可以使用mocha.opts文件来做到这一点:

--require ./node_modules/expect.js/index.js
Run Code Online (Sandbox Code Playgroud)

但是现在我在运行测试时遇到以下错误:

ReferenceError:未定义expect

这似乎是有道理的 - 它如何知道expect我的测试中的引用是指expect.js库导出的内容?

期望库肯定会被加载,好像我将路径更改为不存在的东西然后mocha说:

"错误:找不到模块'./does-not-exist.js'"

有什么方法可以实现我想要的吗?如果可能有帮助的话,我正在从gulp任务中运行我的测试.

Lou*_*uis 20

您正确地要求模块,但正如您所知,模块导出的符号不会自动进入全局空间.您可以使用自己的帮助程序模块来解决此问题.

创建test/helper.js:

var expect = require("expect.js")

global.expect = expect;
Run Code Online (Sandbox Code Playgroud)

并设置test/mocha.opts为:

--require test/helper
Run Code Online (Sandbox Code Playgroud)