gpt4 book ai didi

javascript - 在 MochaJS 测试套件中使用 --globals 变量

转载 作者:行者123 更新时间:2023-11-28 20:30:40 25 4
gpt4 key购买 nike

我正在尝试对 sailjs 进行端到端测试的变体系统使用mocha .我想做的是通过创建用户等操作来模拟操作程序流,然后对该用户执行其他操作。

我希望能够将我的测试分成单独的文件,这些文件按照与不同操作相关的顺序运行,例如“注册新用户”等。为此,我需要能够在测试文件之间传递值.

Mocha 包含一个选项设置 --globals <value1, value2, etc> .这是文档中的描述:

--globals allow the given comma-delimited global [names]

但是,我一直无法让它工作。这是我试过的。我有一个 bootstrap.test.js 文件,它执行基本的前后操作,启动和停止风 sails :

var Sails = require('sails'),
sails;

before(function(done) {
Sails.lift({
log: {
level: 'error'
}
}, function(err, server) {
sails = server;
if (err) return done(err);
// here you can load fixtures, etc.
done(err, sails);
});
});

after(function(done) {
// here you can clear fixtures, etc.
sails.lower(done);
});

然后假设我有两个测试文件 a.jsb.js将连续运行并且出于测试目的包含很少的内容:

a.js:

var user = 'some user';

b.js:

console.log( user );

如果我然后运行 ​​mocha --globals ,我得到错误:

ReferenceError: user is not defined

我在这里做错了什么?我一直无法在网络上的任何地方找到关于如何使用它的描述。

最佳答案

您误解了--globals 的目的。它可能在您使用--check-leaks 时使用。 --check-leaks 选项检查测试是否将变量泄漏到全局空间中。考虑这个套件:

it("one", function () {
foo = 1;
});

如果您使用 mocha --check-leaks 运行它,您将得到一个错误,因为测试创建了一个新的 foo 全局。您可以使用 mocha --check-leaks --globals foo 来防止错误。在大型项目中,可能存在被认为是正常的泄漏,因此使用 --globals 选项可以关闭那些正常情况下的错误。

现在,你怎样才能实现你想做的事情呢?如果使用 var,则无法创建全局变量。您的 a.js 必须是:

user = 'some user';

此外,默认情况下,Mocha 在加载测试文件时不保证顺序。您可以使用--sort 来保证首先加载a.js,但您随后必须使用能够保证此顺序的名称.我更喜欢使用 --require a ,它告诉 Mocha 在开始读取测试文件之前需要模块 a 。您的模块可以称为 z 并且仍然会在任何测试文件之前加载。无论如何,通过删除 var 并使用 --require,您的测试文件将看到您的全局。 (我试过了:有效。)

关于javascript - 在 MochaJS 测试套件中使用 --globals 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28024772/

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