gpt4 book ai didi

javascript - 有没有办法在运行时获取当前的 Mocha 实例和编辑选项?

转载 作者:可可西里 更新时间:2023-11-01 02:09:38 26 4
gpt4 key购买 nike

假设您有一个简单的 mocha 测试:

describe("Suite", function(){
it("test",function(doneCallback){
// here be tests
});
});

在此测试中,我可以通过在 describe 函数中的任意位置添加 this.timeout(VALUE); 来更改超时。

但是,除了 timeout 值之外,还有很多其他的 Mocha options可以从命令行或位于测试文件夹 (./test/mocha.opts) 中的 mocha.opts 文件专门声明。

我想要的是在运行时更改其中一些选项(例如,reporter),而不是在命令行/mocha.opts 文件中。

根据我对可能性的研究,我发现有 an article explaining how you can use mocha programmatically ,这将允许在运行时更改这些选项,但您需要自己创建 Mocha 实例,而在普通测试中,您无法直接访问 Mocha 实例。

那么,有没有办法从现有测试中获取 Mocha 实例,并在测试期间的运行时更改其中一些选项,如 reporter

我想要一个不需要以任何方式修改 Mocha 源代码的选项(我想我可以篡改 Mocha 实例以实现一种直接在 Mocha 构造函数中获取实例的方法)。

最佳答案

实现该目标的最佳方法是根据您已经引用的 wiki 链接使用 Mocha,即以编程方式使用 Mocha。

因此,对于您关于更改 reporter 参数的询问,这里有一个简短的示例,可以执行您想要的操作,以便针对理论上已经存在的名为 test-file 的文件运行测试-a.js 包含你的测试:

var Mocha = require('mocha'),
mocha = new Mocha(),
path = require('path');

mocha.addFile(path.join(__dirname, 'test-file-a.js'));

mocha
.reporter('list')
.run();

除此之外,还有许多其他选项可供您使用,还有一些事件监听器,例如 test,您可能希望在测试期间执行某些操作,例如:

mocha
.reporter('list')
.ui('tdd')
.bail()
.timeout(10000)
.run()
.on('test', function(test) {
if (test.title === 'some title that you want here') {
//do something
}
});

请注意,您可以为每个将再次运行测试套件的 Mocha 实例定义选项,但不会在测试套件的运行期间,例如,如果您开始测试 test-file-a.js 带有选项 reporter('list') 如上所述,当测试运行到其他东西时你不能改变它,就像你可能做的那样使用 timeout 选项,您可以在其中执行 this.timeout()

因此,您必须每次都使用不同的选项实例化一个新的 Mocha 实例。

关于javascript - 有没有办法在运行时获取当前的 Mocha 实例和编辑选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47755719/

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