将Jest从23版本升级到24版本后,运行我的测试时,几乎每个测试都会收到如下警告信息:
"describe"回调函数不应返回值。 从“describe”返回值将在Jest的将来版本中导致测试失败。
相关的堆栈跟踪指向这个模块:
addSpecsToSuite (node_modules/jest-jasmine2/build/jasmine/Env.js:443:15)
这是因为我喜欢在测试中使用箭头函数的简写版本,当函数体只包含一个语句时,省略大括号。例如:The reason for this is that I like to use the short-hand version of arrow-functions for my tests, omitting curly braces when the function body contains only one statement, for example:
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()));
我发现这两个选项都不可接受,我不想为了让 Jest(或 Jasmine)满意而重新设计成千上万的测试用例。
所以我的问题是:
有没有一种方法可以配置 Jest,使得使用简写箭头函数时不会发出这些警告?
describe()
是否使用简写箭头函数,我一直收到相同的警告,但堆栈跟踪略有不同。原来这是PhpStorm中的一个错误,在v2018.3.6中将得到解决。可以在此处找到解决方法:https://intellij-support.jetbrains.com/hc/en-us/community/posts/360003251559-Error-running-tests-from-editor-with-jest-24-?flash_digest=8da09960025d1b74d6145c5f718bba3268ccddba - urig