将 AMD 模块导入 Mocha 测试

Importing AMD module in to Mocha test

我正在使用 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)

被测试为流的来源

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

var xxxy = function() {

};

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

还有 mocha 测试

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

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

我该如何解决这个问题?

您可以使用 amd-loader。我在我的一个项目中使用它 ,该项目的结构是 AMD 模块的集合。安装:

`npm install amd-loader`

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

require("amd-loader");

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

如果你 运行 使用 typescript 进行 mocha 测试。也许你这样做:

  1. 安装 amd-loader:

    npm install amd-loader --save
    
  2. 运行摩卡测试:

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