测试功能不在测试文件中时出现mochajs referenceerror
mochajs referenceerror when testing function not in test file
我有一个 mochajs 测试文件和一个 javascript 代码文件,如下所示:
/js/module/codefile.js
/js/test/testfile.js
codefile.js 包含一些 javascript 函数,例如:
function addNumbers(a, b){
return a+b;
}
testfile.js 调用代码文件中的函数来测试它们:
describe("Add numbers test", function() {
it("checks valid result", function() {
var a = 2;
var b = 1;
var result = addNumbers(a, b);
expect(result).to.equal(3);
});
});
从命令行我 cd 到 js 文件夹(测试和模块目录的父目录)然后我 运行 mocha 并得到以下错误:ReferenceError: addNumbers is not defined at Context (test/testfile.js)。
我真的看不出它是如何定义的,因为 mocha 怎么知道这个函数是从哪里来的? (注意我正在使用客户端 JS,所以不能使用导入,并且没有看到任何具体的方法(通常在 Mocha 或 Karma 或 JS 中),其中函数定义为 Python 或 Java).关于如何在 mocha 中获得简单单元测试的任何想法 运行ning?
我最初尝试在 WebStorm 中将 mocha 设置为 运行,但在出现类似错误后放弃了。
嗯,mocha命令是一个nodejs程序。这意味着您可以使用 Nodejs 的模块系统来加载您的功能。
function addNumbers(a, b){
return a+b;
}
module.exports = addNumbers;
并且在您的测试文件中您将拥有
var addNumbers = require('../module/codefile.js');
describe("Add numbers test", function() {
it("checks valid result", function() {
var a = 2;
var b = 1;
var result = addNumbers(a, b);
expect(result).toEqual(3);
});
});
但是,您说您正在 front-end 上使用您的代码。那么在这种情况下,您只需检查 module
对象是否存在。如果存在,则表示 mocha 需要您的文件进行单元测试。
function addNumbers(a, b){
return a+b;
}
if (module && module.exports) {
module.exports = addNumbers;
}
如果你想摆脱这个讨厌的 if
,你可以使用 browserify 捆绑你的模块。 Browserify 帮助您使用 Nodejs 的模块系统在 front-end 上编码。所以您的代码将保持不变。
我有一个 mochajs 测试文件和一个 javascript 代码文件,如下所示:
/js/module/codefile.js
/js/test/testfile.js
codefile.js 包含一些 javascript 函数,例如:
function addNumbers(a, b){
return a+b;
}
testfile.js 调用代码文件中的函数来测试它们:
describe("Add numbers test", function() {
it("checks valid result", function() {
var a = 2;
var b = 1;
var result = addNumbers(a, b);
expect(result).to.equal(3);
});
});
从命令行我 cd 到 js 文件夹(测试和模块目录的父目录)然后我 运行 mocha 并得到以下错误:ReferenceError: addNumbers is not defined at Context
我真的看不出它是如何定义的,因为 mocha 怎么知道这个函数是从哪里来的? (注意我正在使用客户端 JS,所以不能使用导入,并且没有看到任何具体的方法(通常在 Mocha 或 Karma 或 JS 中),其中函数定义为 Python 或 Java).关于如何在 mocha 中获得简单单元测试的任何想法 运行ning?
我最初尝试在 WebStorm 中将 mocha 设置为 运行,但在出现类似错误后放弃了。
嗯,mocha命令是一个nodejs程序。这意味着您可以使用 Nodejs 的模块系统来加载您的功能。
function addNumbers(a, b){
return a+b;
}
module.exports = addNumbers;
并且在您的测试文件中您将拥有
var addNumbers = require('../module/codefile.js');
describe("Add numbers test", function() {
it("checks valid result", function() {
var a = 2;
var b = 1;
var result = addNumbers(a, b);
expect(result).toEqual(3);
});
});
但是,您说您正在 front-end 上使用您的代码。那么在这种情况下,您只需检查 module
对象是否存在。如果存在,则表示 mocha 需要您的文件进行单元测试。
function addNumbers(a, b){
return a+b;
}
if (module && module.exports) {
module.exports = addNumbers;
}
如果你想摆脱这个讨厌的 if
,你可以使用 browserify 捆绑你的模块。 Browserify 帮助您使用 Nodejs 的模块系统在 front-end 上编码。所以您的代码将保持不变。