gpt4 book ai didi

javascript - 有没有办法调用包含 it() 的 Mocha 函数并运行 `it` 内的任何内容?

转载 作者:行者123 更新时间:2023-12-02 23:18:22 24 4
gpt4 key购买 nike

我正在尝试像下面这样简单地调用 Mocha 函数

this.logSomething = function() {
console.log('======== outside it ========')
it('something inside it', function logSomething(done){
console.log('+++++++ something inside it ++++++++')
done()
})
}

来自另一个js文件。使用 mocha.run(logSomething())

======== outside it ========

出现但是

+++++++ something inside it ++++++++

缺失。

我尝试过使用“描述”,但结果是相同的。有什么解决方案而不是绕过吗?

仅供引用,我知道它可以通过将其导入为 Mocha 测试并使用 Mocha CLI 来运行,但是我想使用此方法重新运行我的测试套件中失败的函数,因此它可能是零个或多个具有不同功能的函数名称,这并不像导入一定数量的 Mocha 测试那么简单。

另外,我已经尝试了 Mocha 现有的重试,由于它与我们的测试不匹配,所以我没有使用它。

最佳答案

一个简单的例子

导出您的 logSomething 函数,将其导入另一个文件并执行它确实给了我您期望的行为:

lib.js

module.exports.logSomething = function() {
console.log('======== outside it ========')
it('something inside it', function logSomething(done){
console.log('+++++++ something inside it ++++++++')
done()
})
}

test.js

const {logSomething} = require('./lib');
logSomething();
logSomething();

输出

$ mocha test.js
======== outside it ========
======== outside it ========


+++++++ something inside it ++++++++
✓ something inside it
+++++++ something inside it ++++++++
✓ something inside it

2 passing (4ms)

具有多个文件和类的示例

这是一个更复杂的示例:有一个 test.js,它从两个单独的文件导入两个类。每个类都有两个方法,依次使用 it() 运行 mocha 测试用例。

test.js

const {TestSet1} = require('./lib1');
const {TestSet2} = require('./lib2');

new TestSet1().runTest1();
new TestSet1().runTest2();
new TestSet2().runTest1();
new TestSet2().runTest2();

lib1.js

class TestSet1 {

runTest1() {
it('should run TestSet1.Test1.It1', () => {
console.log('This is output from TestSet1.Test1.It1');
});
it('should run TestSet1.Test1.It2', () => {
console.log('This is output from TestSet1.Test1.It2');
});
}

runTest2() {
it('should run TestSet1.Test2.It1', () => {
console.log('This is output from TestSet1.Test2.It1');
});
it('should run TestSet1.Test2.It2', () => {
console.log('This is output from TestSet1.Test2.It2');
});
}

}

module.exports = {TestSet1};

lib2.js

class TestSet2 {

runTest1() {
it('should run TestSet2.Test1.It1', () => {
console.log('This is output from TestSet2.Test1.It1');
});
it('should run TestSet2.Test1.It2', () => {
console.log('This is output from TestSet2.Test1.It2');
});
}

runTest2() {
it('should run TestSet2.Test2.It1', () => {
console.log('This is output from TestSet2.Test2.It1');
});
it('should run TestSet2.Test2.It2', () => {
console.log('This is output from TestSet2.Test2.It2');
});
}

}

module.exports = {TestSet2};

输出

$ mocha test.js


This is output from TestSet1.Test1.It1
✓ should run TestSet1.Test1.It1
This is output from TestSet1.Test1.It2
✓ should run TestSet1.Test1.It2
This is output from TestSet1.Test2.It1
✓ should run TestSet1.Test2.It1
This is output from TestSet1.Test2.It2
✓ should run TestSet1.Test2.It2
This is output from TestSet2.Test1.It1
✓ should run TestSet2.Test1.It1
This is output from TestSet2.Test1.It2
✓ should run TestSet2.Test1.It2
This is output from TestSet2.Test2.It1
✓ should run TestSet2.Test2.It1
This is output from TestSet2.Test2.It2
✓ should run TestSet2.Test2.It2

8 passing (9ms)

关于javascript - 有没有办法调用包含 it() 的 Mocha 函数并运行 `it` 内的任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57062219/

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