我正在使用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() {
...................
});
});
});
如何解决此问题?
答案 0 :(得分:3)
您可以使用amd-loader
。我在我的一个项目中将它用于年,该项目被构建为AMD模块的集合。安装时:
`npm install amd-loader`
然后需要在任何AMD模块之前加载它。一般来说:
require("amd-loader");
对于Mocha,您可以使用参数--require amd-loader
。如果您不想记得一遍又一遍地输入,可以将它放在test/mocha.opts
文件中。
答案 1 :(得分:0)
如果你使用打字稿运行mocha测试。也许你这样做:
安装amd-loader:
npm install amd-loader --save
运行mocha test:
mocha src/**/*test.ts --require ts-node/register -r amd-loader