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

React Native中用Jest模拟react-native-dotenv环境变量的问题

解决Jest测试中react-native-dotenv变量未定义的问题

针对服务器无.env文件导致Jest测试抛错的问题,以下是几种可行的解决方法:

  • 全局模拟环境变量
    在Jest配置文件(jest.config.js)中直接定义测试用的全局变量,对应react-native-dotenv编译后的变量格式:

    module.exports = {
      // 保留原有其他配置
      globals: {
        '__PROFILE_URL__': 'https://test-profile-url.com'
      }
    };
    

    注:react-native-dotenv会将环境变量编译为__VAR_NAME__格式的全局变量,因此变量名需添加前后双下划线。

  • Mock整个react-native-dotenv模块

    1. 在项目根目录创建__mocks__/react-native-dotenv.js文件,导出测试所需的变量:
      export const PROFILE_URL = 'https://test-profile-url.com';
      // 其他需要的环境变量也可在此添加
      
    2. 在jest.config.js中配置模块映射,让Jest测试时使用这个mock文件:
      module.exports = {
        // 保留原有其他配置
        moduleNameMapper: {
          'react-native-dotenv': '<rootDir>/__mocks__/react-native-dotenv.js'
        }
      };
      
  • 创建测试专用.env文件
    生成一个仅用于测试的.env.test文件,写入测试用变量:

    PROFILE_URL=https://test-profile-url.com
    

    然后修改package.json中的测试脚本,指定测试环境:

    "scripts": {
      "test": "NODE_ENV=test jest"
    }
    

    react-native-dotenv会自动加载对应NODE_ENV的.env文件(如NODE_ENV=test时加载.env.test)。

  • 单文件局部Mock
    如果只有个别测试文件需要处理,可在对应测试文件顶部直接Mock变量:

    jest.mock('react-native-dotenv', () => ({
      PROFILE_URL: 'https://test-profile-url.com'
    }));
    

内容的提问来源于stack exchange,提问作者Shariq Ahmed -

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:43:12