将AMD模块导入Mocha测试

时间:2017-01-18 09:11:30

标签: javascript node.js mocha amd

我正在使用Mocha来测试导出为AMD模块的代码。运行摩卡测试会给我以下错误。

ReferenceError: define is not defined
at Object.<anonymous> (/home/malintha/projects/...../xxx.js:1:63)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)

作为floows测试的源

define(['lodash', 'log', './yyy'], function(_, log, YYY) {

var xxxy = function() {

};

..............
});

和摩卡测试

var expect    = require("chai").expect;
var sourceGenVisitor = require("../../xxx")

describe("", function() {
 describe("", function() {
  it("Checks generated source", function() {
     ...................
  });
  });
 });

如何解决此问题?

2 个答案:

答案 0 :(得分:3)

您可以使用amd-loader。我在我的一个项目中将它用于,该项目被构建为AMD模块的集合。安装时:

`npm install amd-loader`

然后需要在任何AMD模块之前加载它。一般来说:

require("amd-loader");

对于Mocha,您可以使用参数--require amd-loader。如果您不想记得一遍又一遍地输入,可以将它放在test/mocha.opts文件中。

答案 1 :(得分:0)

如果你使用打字稿运行mocha测试。也许你这样做:

  1. 安装amd-loader:

    npm install amd-loader --save
    
  2. 运行mocha test:

    mocha  src/**/*test.ts --require ts-node/register -r amd-loader