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

我用我的摩卡单位testing使用expect.js库。 目前,我需要在每个文件的第一行上的库,如下所示:

var expect = require('expect.js'); describe('something', function () { it('should pass', function () { expect(true).to.be(true); // works }); }); 

如果可能的话,我想从每个文件的第一行中删除样板需求代码 ,并让我的unit testing神奇地知道expect 。 我想我可以使用mocha.opts文件来做到这一点:

 --require ./node_modules/expect.js/index.js 

但是现在我运行我的testing时出现以下错误:

ReferenceError:expect没有定义

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

期望的库肯定会被加载,就像我改变path到不存在的东西那么摩卡说:

“错误:找不到模块”./does-not-exist.js“”

有什么办法可以完成我想要的吗? 如果可能有帮助的话,我正在进行一些testing。

你需要正确的模块,但是正如你所想的那样,模块导出的符号不会自动进入全局空间。 你可以用你自己的帮手模块来解决这个问题。

创buildtest/helper.js

 var expect = require("expect.js") global.expect = expect; 

并将您的test/mocha.opts设置为:

 --require test/helper 

虽然路易斯的回答是现实的,但最终我用一种不同的方法解决了这个问题:使用业力和业报 – 柴的插件:

安装:

 npm install karma-chai --save-dev 

configuration:

 karma.set({ frameworks: ['mocha', 'chai'] // ... }); 

使用:

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