【发布时间】:2019-04-06 11:23:13
【问题描述】:
在将 Jest 从版本 23 升级到版本 24 后,在运行我的测试时,我几乎每次测试都会收到这样的警告消息:
“描述”回调不得返回值。 在 Jest 的未来版本中,从“describe”返回一个值将导致测试失败。
附带的堆栈跟踪指向此模块:
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强制返回未定义
describe('true', () =>
void it('should be truthy', () =>
expect(true).toBeTruthy()));
我发现这些选项都不可接受,我不想重构数千个测试只是为了让 Jest(或 Jasmine)开心。
所以我的问题是:
有没有办法配置 Jest,以便在使用速记箭头函数时不会发出这些警告?
【问题讨论】:
-
除了个人喜好之外还有什么特殊原因需要使用速记语法吗?这似乎可以通过添加大括号 100% 解决。
-
个人喜好,习惯了,喜欢简洁的语法
-
无论我的
describe()s 是否使用速记箭头函数,我都会收到相同的警告,但堆栈跟踪略有不同。原来这是 PhpStorm 中的一个错误,将在 v2018.3.6 中解决。解决方法可以在这里找到:intellij-support.jetbrains.com/hc/en-us/community/posts/… -
当您在描述中嵌套描述时也会发生这种情况。这些更改是错误。如果我有时间,我会在 repo 上报告这个。
-
@Ionix 好吧,他们给出了详细的弃用警告这一事实使它看起来不是一个错误,而是一个功能
标签: javascript jestjs arrow-functions