gpt4 book ai didi

javascript - 开 Jest - 将测试分开到另一个文件中

转载 作者:行者123 更新时间:2023-11-30 19:00:52 25 4
gpt4 key购买 nike

是否可以将 jest 的测试函数分离到另一个文件中,还是它们必须在执行文件中?

例如:

test_file.js

function tests (input)
{
it(
"should pass",
function ()
{
expect(input).toBeTrue()
}
)
// more test functions
}
module.exports = tests

ma​​in.js

const tests = require("./test_file.js")

describe(
"test block 1",
function ()
{
let input

beforeAll( () => input = true )

tests(input)
}
)

现在,input 始终未定义

最佳答案

让我们添加一些日志并查看这段代码的执行顺序。

main.test.js:

const tests = require('./test_file.js');
console.log('000');
describe('test block 1', function() {
let input;
console.log('111');
beforeAll(() => {
console.log('222');
input = true;
});
tests(input);
});

test_file.js:

console.log('333');
function tests(input) {
console.log('444');
it('should pass', function() {
console.log('555');
expect(input).toBeTruthy();
});
}
module.exports = tests;

测试结果:

 FAIL  src/stackoverflow/59520741/main.test.js (9.747s)
test block 1
✕ should pass (7ms)

● test block 1 › should pass

expect(received).toBeTruthy()

Received: undefined

4 | it('should pass', function() {
5 | console.log('555');
> 6 | expect(input).toBeTruthy();
| ^
7 | });
8 | }
9 | module.exports = tests;

at Object.<anonymous> (src/stackoverflow/59520741/test_file.js:6:19)

console.log src/stackoverflow/59520741/test_file.js:1
333

console.log src/stackoverflow/59520741/main.test.js:2
000

console.log src/stackoverflow/59520741/main.test.js:5
111

console.log src/stackoverflow/59520741/test_file.js:3
444

console.log src/stackoverflow/59520741/main.test.js:7
222

console.log src/stackoverflow/59520741/test_file.js:5
555

Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 11.015s

现在,我们知道了。 tests 函数将在 jest 的测试运行器收集测试用例之前执行。这意味着您的 tests 函数仅声明测试用例(“111”和“444”短语)。此时,beforeAll 钩子(Hook)还没有执行。 input 变量的值仍然是 undefined 并传递给 tests 函数。

tests 函数执行后,测试用例被声明。测试运行器将收集这些测试用例并以正常方式运行它们。 beforeAll 钩子(Hook)将首先执行('222' 短语)。

关于javascript - 开 Jest - 将测试分开到另一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59520741/

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