如何将排毒代码插入到应用程序包中

How is detox code inserted into the app bundle

我使用 detox 运行 对 React Native 进行端到端测试。

这篇 artcile 由一位从事排毒工作的人撰写

Gray box essentially uses a piece of code that is planted in the app, it can help us see what’s going on inside.

我的问题是,这是怎么发生的?查看 docs 用于 detox build 的命令是

xcodebuild -project ios/YourProject.xcodeproj -scheme YourProject -sdk iphonesimulator -derivedDataPath ios/build

那里没有专门提到排毒的内容。

此外,文档 state here 构建命令是可选的

You can also choose not to use it and provide a compiled app by yourself.

嗯,我该怎么做?如何注入排毒/确保没有将排毒注入我的应用程序?如果我从我的 CI 服务器下载已编译的应用程序,它不能与排毒一起使用(这并不奇怪,因为排毒代码没有植入到应用程序中)。但是,如果我使用 detox build 命令(无论配置中的 build 命令指定什么,它似乎只是 运行),测试就会工作。似乎发生了一些 "magic" 新人无法理解的事情。

谢谢。

太神奇了!

嗯,实际上不是。构建步骤 完全可选的,并且如文档中所述,Detox 适用于任何有效的应用程序。

为了加载 Detox,我们告诉动态链接器使用 DYLD_INSERT_LIBRARIES 环境变量加载它。因此它只会在您从命令行 运行 detox test 时加载 Detox。

这在模拟器上很容易,因为它可以访问您的 Mac 的文件系统。一旦我们实现了对实际硬件设备测试的支持,我们仍将使用该环境变量,但我们必须将其直接注入到您的 IPA 文件中。