如何从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 }); });