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模块
- 在项目根目录创建
__mocks__/react-native-dotenv.js文件,导出测试所需的变量:export const PROFILE_URL = 'https://test-profile-url.com'; // 其他需要的环境变量也可在此添加 - 在
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 -
相关产品推荐
相关产品推荐

