如何在Mocha测试中重用变量?

时间:2014-01-22 07:03:11

标签: javascript node.js oop mocha

在我的mocha测试中,我总是需要相同的库。例如:

var mongoose = require('mongoose'),
  User = mongoose.model('User'),
  _ = require('underscore');

我想在每个测试文件中使用它们:

describe('xxx', function () {
  it('xxx', function (done) {
    var user = new User();
    done();
  });
});

不使用像var user = new somefile.User();这样的任何前缀 怎么做或有更好的解决方案?感谢。

1 个答案:

答案 0 :(得分:1)

基本上,这是不可能的。

Mocha在长版本中有一个-r(或--require)参数可以帮助您需要模块,但是documentation状态:

  

--require选项对于诸如should.js之类的库非常有用,因此您可以简单地--require should而不是在每个测试文件中手动调用require('should')。请注意,这应该会增加Object.prototype,但是如果您希望访问模块的导出,则必须要求它们,例如var should = require('should')

我可以想象作为一种解决方法是引入一个帮助文件,它基本上什么也不做,只是使用一个模块导出你需要的所有必需模块(这基本上归结为你对prefix的建议) :

module.exports = {
  mongoose: require('mongoose'),
  User: mongoose.model('User'),
  _: require('underscore')
};

这允许您仅在实际测试文件(帮助文件)中导入一个模块,并将所有其他模块作为子对象访问,例如:

var helper = require('./helper');

describe('xxx', function () {
  it('xxx', function (done) {
    var user = new helper.User();
    done();
  });
});

可能有一个比你可以使用的helper更好的名字,但基本上这可能是一种让它起作用的方法。