我想人们通常会一起使用 Flow 和 Jest(以及 React),但 Flow 似乎不了解 Jest(或 Jasmine)全局变量。当我将 //@flow
添加到我的测试中时,我收到如下 Flow 错误:
src/__tests__/Thing-test.js:3
3: jest.unmock('../Thing')
^^^^ identifier `jest`. Could not resolve name
src/__tests__/Thing-test.js:7
7: describe('Thing', () => {
^^^^^^^^ identifier `describe`. Could not resolve name
src/__tests__/Thing-test.js:8
8: it('does stuff', () => {
^^ identifier `it`. Could not resolve name
我可以为 Jest/Jasmine 编写一个 Flow 接口(interface),但这看起来很长,而且我肯定错过了一些东西。让 Flow 处理 node_modules/jest-cli
似乎没有帮助。
请您参考如下方法:
虽然 Jest 是用流注释编写的,但它们会剥离 npm 版本的类型,因此我们不需要 babel 来运行它。幸运的是,类型已经在 flow-type 中,因此解决方案非常简单(正如评论中提到的):
npm install -g flow-typed
flow-typed install jest@22.x.x # <-- replace the version with the latest
尽管我也必须将此行添加到我的 .eslintrc.json
中:
{
"env": {
"jest": true
}
}