Pat*_*und 8 javascript jestjs arrow-functions
将Jest从版本23升级到版本24之后,在运行测试时,几乎所有测试都会收到类似以下的警告消息:
“描述”回调不得返回值。从“描述”中返回值将在以后的Jest版本中使测试失败。
相应的堆栈跟踪点指向此模块:
addSpecsToSuite (node_modules/jest-jasmine2/build/jasmine/Env.js:443:15)
Run Code Online (Sandbox Code Playgroud)
原因是我喜欢在测试中使用箭头函数的简写形式,当函数主体仅包含一个语句时,省略花括号,例如:
describe('true', () =>
it('should be truthy', () =>
expect(true).toBeTruthy()));
Run Code Online (Sandbox Code Playgroud)
该it语句显然返回,而不是undefined,因此发出警告。
我发现了两种解决方法:
?不要使用速记箭头功能
describe('true', () => {
it('should be truthy', () =>
expect(true).toBeTruthy());
});
Run Code Online (Sandbox Code Playgroud)
?使用void到部队返回undefined
describe('true', () =>
void it('should be truthy', () =>
expect(true).toBeTruthy()));
Run Code Online (Sandbox Code Playgroud)
我发现这些选项都不可接受,我不想重构成千上万的测试只是为了让Jest(或Jasmine)高兴。
所以我的问题是:
有没有一种配置Jest的方法,以便在使用速记箭头功能时不会发出这些警告?
我猜您是否真的想保留现有的测试语法,而只是想避免警告,可以这样做:
const realDescribe = describe;
describe = ((name, fn) => { realDescribe(name, () => { fn(); }); });
Run Code Online (Sandbox Code Playgroud)
只需将该代码添加到您所包含的模块中setupFilesAfterEnv,它将“在环境中安装了测试框架之后立即”和“在每次测试之前”运行。
上面的代码会将全局设置describe为一个函数,该函数调用real,describe但将function参数包装在不返回任何内容的匿名函数中。
| 归档时间: |
|
| 查看次数: |
3178 次 |
| 最近记录: |