Detox - 努力在基本的 iOS RN 应用程序上“构建二进制文件的 Detox 版本并运行测试”

The*_*121 2 javascript react-native detox

为你的帮助干杯。我对 Detox、React Native、Mac、Xcode 非常陌生,并且在 StackOverflow 上发帖(新工作),如果我遗漏了详细信息,我深表歉意。

我正在遵循以下指南:https: //reactnative.dev

我跑了

npx 反应本机 init MyTestApp

并拥有一个可用的 iOS 应用程序,这样我就可以启动捆绑器并与演示应用程序进行交互。我大致了解发生了什么事。

然后我开始按照此处的指南进行操作:

https://reactnativetesting.io/e2e/setup.html#installing-detox

我进入以下部分:

$ 排毒构建 -c ios

$ 排毒测试 -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)
Run Code Online (Sandbox Code Playgroud)

让我超级困惑的是我的 .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"
      }
    }
  }
}

Run Code Online (Sandbox Code Playgroud)

包.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"
  }
}

Run Code Online (Sandbox Code Playgroud)

The*_*121 7

必须将“-UseModernBuildSystem=YES -arch x86_64”添加到构建步骤才能解决。