RequireJS替换Node的Require方法

时间:2015-01-23 21:07:13

标签: node.js requirejs mocha

我遇到了一个问题,其中node的require方法已被requirejs的require方法所取代。我们正在运行一个骨干应用程序,我已经设置了一些mocha测试。目标是能够在浏览器中运行测试,并使用grunt-mocha-test并在每个构建中使用grunt-contrib-watch在终端中运行它们。

我还没有完全理解所有这些部分是如何组合在一起的,所以请原谅任何缺乏解释,理解。

这是我们的一个测试文件models.js:

的设置
describe("Models", function() {

  var should;
  var firstModule = 'models/firstModel';
  var secondModule = 'models/secondModel';
  var chaiModule = 'chai';

  modules = [
    firstModule,
    secondModule,
    chaiModule
  ];

  before(function(done) {
    require(modules, function(firstModel, secondModel, chai){
      FirstModel = eventModel;
      SecondModel = eventDetailsModel;
      should = chai.should();
      done();
    });
  });

  beforeEach(function(done) {
    NewFirstModel = new FirstModel();
    NewSecondModel = new SecondModel();
    done();
  });

  describe("first model", function() {

    it("should exist", function (done) {
      NewFirstModel.should.exist();
      done();
    });
  });
});

将grunt-contrib-requirejs与这些设置一起使用:

compile:
  options:
    baseUrl: "<%= tmpDir %>/scripts"
    mainConfigFile: "<%= tmpDir %>/scripts/init.js"
    name: "../../bower_components/almond/almond"
    out: "<%= distDir %>/scripts/app.js"
    preserveLicenseComments: false
    cjsTranslate: true
    wrapShim: true
    uglify:
      ascii_only: true

mochaTest grunt任务:

test:
  options:
    reporter: 'spec',
  src: ['app/test/*.js']

我有一个test.html文件,其中包含每个单独的测试文件,并正确测试我扔给他们的所有内容。

但是,当我运行指向相同测试文件的mochaTest grunt任务时,我收到以下错误:

AssertionError: path must be a string

引用models.js中的这一行:

require(modules, function(firstModel, secondModel, chai){

如果我在控制台上记录了require方法,它会以RequireJS的require方式返回。我尝试了一些不同的东西,包括在requirejs config中引用的init.js文件中设置nodeRequire: require。有线索吗?感谢!!!

0 个答案:

没有答案