gpt4 book ai didi

javascript - 测试功能不在测试文件中时出现mochajs referenceerror

转载 作者:行者123 更新时间:2023-11-30 09:54:14 27 4
gpt4 key购买 nike

我在设置中有一个 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 未在上下文 (test/testfile.js) 中定义。

我实际上看不出它是如何定义的,因为 mocha 怎么知道这个函数来自哪里? (注意,我使用的是客户端 JS,因此不能使用导入,并且还没有看到任何具体方法(通常在 Mocha 或 Karma 或 JS 中),其中函数的定义与在 Python 或 Java 中的定义相同)。关于如何在 mocha 中运行简单的单元测试有什么想法吗?

我最初尝试让 mocha 在 WebStorm 中运行,但在出现类似错误后放弃了。

最佳答案

嗯,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);
});
});

但是,你说你是在前端使用你的代码。那么在这种情况下,您只需检查 module 对象是否存在。如果存在,则表示 mocha 需要您的文件进行单元测试。

    function addNumbers(a, b){
return a+b;
}

if (module && module.exports) {
module.exports = addNumbers;
}

如果你想摆脱这种讨厌的if,你可以使用browserify 来捆绑你的模块。 . Browserify 帮助您使用 Nodejs 的模块系统在前端进行编码。所以您的代码将保持不变。

关于javascript - 测试功能不在测试文件中时出现mochajs referenceerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34824075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com