You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jest测试文件中使用Flow出现test、expect未定义错误,如何解决?

解决Flow中test和expect未定义的报错问题

你遇到的这个问题很常见——Flow默认不知道Jest提供的test、expect这些全局变量,所以会抛出未定义的错误。这里有几种靠谱的解决方法:

方法一:用flow-typed安装Jest的官方类型定义

flow-typed是Flow的官方类型定义仓库,专门提供各种第三方库的Flow类型声明,步骤如下:

  1. 先全局安装flow-typed工具(如果还没装的话):
    npm install -g flow-typed
    
  2. 进入你的项目根目录,运行下面的命令(替换成你实际使用的Jest版本号,比如29.7.0):
    flow-typed install jest@29.7.0
    
    这会在项目的flow-typed目录下生成Jest的类型定义文件,Flow会自动读取这些定义,test和expect的报错就会消失了。

方法二:手动声明全局变量(快速临时方案)

如果不想折腾flow-typed,也可以直接在你的test.js文件顶部添加全局变量的声明:

// @flow
declare var test: (name: string, fn: () => void | Promise<void>) => void;
declare var expect: (value: mixed) => any;

import React from "react";
// ... 其他代码

或者你可以把这些声明放到项目根目录的flow-typed文件夹里的一个自定义文件(比如jest-global.js),这样所有测试文件都能共享这个声明,不用每个文件都写一遍。

方法三:配置Flow识别Jest环境

还有一种方式是在你的.flowconfig文件中添加Jest的环境配置,配合类型定义一起使用:
在.flowconfig的[options]区块里加上:

[options]
jest=true

再确保有Jest的类型定义(比如通过方法一安装),Flow就能正确识别所有Jest全局变量了。

这些方法都能解决你遇到的问题,个人推荐方法一,因为它能提供最完整准确的Jest类型支持,后续其他Jest相关的API(比如beforeEach、afterAll)也不会再报错。

内容的提问来源于stack exchange,提问作者Ilja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:37:45