如何解决Detox - 在基本的 iOS RN 应用程序上努力“构建二进制文件的 Detox 版本,并运行测试”
为您的帮助干杯。我对 Detox、React Native、Mac、Xcode 和 StackOverflow 上的帖子(新工作)非常陌生,如果我遗漏了细节,我深表歉意。
我正在遵循以下指南: https://reactnative.dev
我跑了
npx react-native init MyTestApp
并且有一个可以运行的 iOS 应用程序,这样我就可以启动捆绑程序并与演示应用程序进行交互。我大致了解正在发生的事情。
然后我开始遵循此处的指南:
https://reactnativetesting.io/e2e/setup.html#installing-detox
我进入该部分:
$ detox build -c ios
$ detox test -c ios
我终生无法使用 detox build -c ios 命令,输出如下:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
warning: no rule to process file '/*****/*********/*****************/JamesReactNativeTest/ios/Pods/Flipper-RSocket/rsocket/benchmarks/CMakeLists.txt' of type 'text' for architecture 'arm64' (in target 'Flipper-RSocket' from project 'Pods')
warning: no rule to process file '/*****/*********/*****************/JamesReactNativeTest/ios/Pods/Flipper-RSocket/rsocket/benchmarks/README.md' of type 'net.daringfireball.markdown' for architecture 'arm64' (in target 'Flipper-RSocket' from project 'Pods')
warning: no rule to process file '/*****/*********/*****************/JamesReactNativeTest/ios/Pods/Flipper-RSocket/rsocket/README.md' of type 'net.daringfireball.markdown' for architecture 'arm64' (in target 'Flipper-RSocket' from project 'Pods')
warning: no rule to process file '/*****/*********/*****************/JamesReactNativeTest/ios/Pods/Flipper-RSocket/rsocket/benchmarks/CMakeLists.txt' of type 'text' for architecture 'x86_64' (in target 'Flipper-RSocket' from project 'Pods')
warning: no rule to process file '/*****/*********/*****************/JamesReactNativeTest/ios/Pods/Flipper-RSocket/rsocket/benchmarks/README.md' of type 'net.daringfireball.markdown' for architecture 'x86_64' (in target 'Flipper-RSocket' from project 'Pods')
warning: no rule to process file '/*****/*********/*****************/JamesReactNativeTest/ios/Pods/Flipper-RSocket/rsocket/README.md' of type 'net.daringfireball.markdown' for architecture 'x86_64' (in target 'Flipper-RSocket' from project 'Pods')
warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this,select a development team in the JamesReactNativeTest editor. (in target 'JamesReactNativeTest' from project 'JamesReactNativeTest')
** BUILD FAILED **
The following build commands failed:
Ld /*****/*********/*****************/JamesReactNativeTest/ios/build/Build/Intermediates.noindex/JamesReactNativeTest.build/Debug-iphonesimulator/JamesReactNativeTest.build/Objects-normal/arm64/Binary/JamesReactNativeTest normal arm64
(1 failure)
让我感到非常困惑的是我的 .detoxrc.json 似乎有正确的二进制路径,因为当我通过终端运行该命令时,我(可能错误地)认为 Detox 正在修改此命令以使其失败?我读到你的 package.json 是由 detox build 读取的,但 iOS 上的命令也有效。
我正在做一些非常愚蠢的事情,但我陷入了困境,无法看到答案。抱歉,如果已经存在类似的问题,我无法将任何问题与我的问题联系起来。再次为您提供的任何帮助干杯。
detoxrc.json
{
"testRunner": "jest","runnerConfig": "e2e/config.json","configurations": {
"ios": {
"type": "ios.simulator","binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/JamesReactNativeTest.app","build": "xcodebuild -workspace ios/JamesReactNativeTest.xcworkspace -scheme JamesReactNativeTest -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build","device": {
"type": "iPhone 11"
}
},"android": {
"type": "android.emulator","binaryPath": "SPECIFY_PATH_TO_YOUR_APP_BINARY","device": {
"avdName": "Pixel_2_API_29"
}
}
}
}
package.json
{
"name": "JamesReactNativeTest","version": "0.0.1","private": true,"scripts": {
"android": "react-native run-android","ios": "react-native run-ios","start": "react-native start","test": "jest","lint": "eslint ."
},"dependencies": {
"react": "16.13.1","react-native": "0.63.4","react-native-macos": "^0.63.0-0"
},"devDependencies": {
"@babel/core": "^7.12.10","@babel/runtime": "^7.12.5","@react-native-community/eslint-config": "^2.0.0","babel-jest": "^26.6.3","detox": "^18.2.2","eslint": "^7.17.0","eslint-plugin-detox": "^1.0.0","jest": "^26.6.3","jest-circus": "^26.6.3","metro-react-native-babel-preset": "^0.64.0","react-test-renderer": "16.13.1"
},"jest": {
"preset": "react-native"
}
}
解决方法
必须在构建步骤中添加“-UseModernBuildSystem=YES -arch x86_64”才能解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。