将 env 文件传递​​给 detox

Posted

技术标签:

【中文标题】将 env 文件传递​​给 detox【英文标题】:Pass env file to detox 【发布时间】:2020-05-01 06:46:41 【问题描述】:

我想在我的 react-native 应用程序中运行排毒测试时传递环境变量:

 "ios.sim.debug": 
    "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/myapp.app",
    "build": "export IS_DETOX=true && xcodebuild -workspace ios/myapp.xcworkspace -scheme my app -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
    "type": "ios.simulator",
    "device": 
      "type": "iPhone 11 Pro"
    
  

我已经安装了react-native-config。但是当我运行排毒测试时,变量 IS_DETOX 在 JS 中是未定义的。

谢谢

【问题讨论】:

您的 IS_DETOX 变量是在构建步骤中定义的。您为什么希望它在运行时出现? 你知道我怎样才能让这个变量在运行时可以访问吗?例如,我想在 detox 构建中禁用动画和 toast/alert 消息,这要归功于 IS_DETOX 之类的 env var 您可以使用启动参数、流程环境变量或模拟您的东西。阅读排毒文档。 @GChevass 你知道怎么做了吗?如果您这样做了,请您发布答案吗? 我能够让它在根文件夹中使用.env 运行。它被 Detox 自动挑选 【参考方案1】:

我正在设置没有export 的环境变量。

我所有的 .env 变量都存储在 config 文件夹中,我可以为不同的配置加载不同的环境文件。

iOS

"ios.sim.release": 
  "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/Clim8Invest.app",
  "build": "ENVFILE=config/.env.acceptance xcodebuild -workspace ios/Clim8Invest.xcworkspace -scheme Clim8Invest -configuration Release -sdk iphonesimulator -derivedDataPath ios/build",
  "type": "ios.simulator",
  "device": 
    "type": "iPhone 11"
  
,

安卓

"android.emu.debug.e2e": 
  "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
  "build": "cd android && ENVFILE=../config/.env.e2e ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
  "type": "android.emulator",
  "device": 
    "avdName": "Nexus_5X_A"
  

【讨论】:

【参考方案2】:

谢谢@Black!

在我这边,我最终使用了来自Detox Mocking Guide 的RN_SRC_EXT=e2e.js 的另一个解决方案,因此排毒构建使用来自MyConfig.e2e.js 文件而不是MyConfig.js 文件的参数

【讨论】:

以上是关于将 env 文件传递​​给 detox的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 npm cli 将 env 变量传递给 rollup.config.js?

将环境变量传递给 application.yml

可以将来自docker-compose.yml的env变量传递给dockerfile吗?

在生产中使用 dotenv,还是将 env 变量传递给 js/js.erb?并尝试使用凭据

我需要通过 gitlab-ci 中的 ssh 将 env 变量传递给 docker

将二进制文件传递给erlang nif