gpt4 book ai didi

javascript - 如何避免 Jest 警告 : A "describe" callback must not return a value?

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:08 27 4
gpt4 key购买 nike

将 Jest 从版本 23 升级到版本 24 后,在运行我的测试时,几乎每个测试都会收到这样的警告消息:

A "describe" callback must not return a value. Returning a value from "describe" will fail the test in a future version of Jest.

附带的堆栈跟踪指向此模块:

addSpecsToSuite (node_modules/jest-jasmine2/build/jasmine/Env.js:443:15)

这样做的原因是我喜欢在我的测试中使用箭头函数的简写版本,当函数体只包含一个语句时省略大括号,例如:

describe('true', () =>
it('should be truthy', () =>
expect(true).toBeTruthy()));

it 语句显然返回了 undefined 以外的内容,因此出现了警告。

我找到了两种解决方法:

① 不要使用速记箭头函数

describe('true', () => {
it('should be truthy', () =>
expect(true).toBeTruthy());
});

② 使用void强制返回undefined

describe('true', () =>
void it('should be truthy', () =>
expect(true).toBeTruthy()));

我觉得这两个选项都 Not Acceptable ,我不想重构成千上万的测试只是为了让 Jest(或 Jasmine)开心。

所以我的问题是:

有没有办法配置 Jest,以便在使用速记箭头函数时不会发出这些警告?

最佳答案

我想如果你真的想保留你现有的测试语法并且只是想避免警告你可以这样做:

const realDescribe = describe;
describe = ((name, fn) => { realDescribe(name, () => { fn(); }); });

只需将该代码添加到您的 setupFilesAfterEnv 中包含的模块中即可它将“在环境中安装测试框架之后”和“每次测试之前”运行。

上面的代码会将全局describe 设置为一个函数,该函数调用真正的describe 但将function 参数包装在一个匿名函数中不返回任何东西。

关于javascript - 如何避免 Jest 警告 : A "describe" callback must not return a value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55207984/

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