我试图使用Wix / Detox来测试我的react-native应用程序(iOS版本)。我已成功按照https://github.com/wix/detox/blob/master/docs/Introduction.GettingStarted.md
的说明(直到"排毒构建")然而,当运行"排毒构建"在我的项目目录中,我收到以下错误:
select
在运行"排毒测试时,"我收到以下错误:
** BUILD FAILED **
The following commands produced analyzer issues:
Analyze RNFIRMessaging.m
(1 command with analyzer issues)
The following build commands failed:
Ld build/Build/Products/Debug-iphonesimulator/<myAppName>.app/<myAppName> normal x86_64
(1 failure)
child_process.js:524
throw err;
^
Error: Command failed: xcodebuild -project ios/<myAppName>.xcodeproj -scheme <myAppName> -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build
at checkExecSyncError (child_process.js:481:13)
at Object.execSync (child_process.js:521:13)
at Object.<anonymous> (/Users/<myUserName>/Documents/react-native-projects/<myAppName>/node_modules/detox/local-cli/detox-build.js:26:6)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:423:7)
我的项目目录中有一个e2e文件夹,包含三个文件:init.js,mocha.opts和firstTest.spec.js。
firstTest.spec.js如下所示:
node_modules/.bin/mocha e2e --opts e2e/mocha.opts
detox info 09:31:22: server listening on localhost:50342...
detox info 1: Listing devices...
1) "before all" hook
0 passing (376ms)
1 failing
1) "before all" hook:
Error: field CFBundleIdentifier not found inside Info.plist of app binary at /Users/<myUserName>/Documents/react-native-projects/<myAppName>/ios/build/Build/Products/Debug-iphonesimulator/<myAppName>.app
at SimulatorDriver._callee2$ (node_modules/detox/lib/devices/SimulatorDriver.js:28:19)
at tryCatch (node_modules/regenerator-runtime/runtime.js:64:40)
at Generator.invoke [as _invoke] (node_modules/regenerator-runtime/runtime.js:299:22)
at Generator.prototype.(anonymous function) [as throw] (node_modules/regenerator-runtime/runtime.js:116:21)
at step (node_modules/detox/lib/devices/SimulatorDriver.js:1:809)
at node_modules/detox/lib/devices/SimulatorDriver.js:1:1008
child_process.js:524
throw err;
^
Error: Command failed: node_modules/.bin/mocha e2e --opts e2e/mocha.opts
at checkExecSyncError (child_process.js:481:13)
at Object.execSync (child_process.js:521:13)
at Object.<anonymous> (/Users/<myUserName>/Documents/react-native-projects/<myAppName>/node_modules/detox/local-cli/detox-test.js:46:4)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:423:7)
init.js看起来像这样:
/* eslint-env node, mocha */
/* global element, expect, device, by */
describe('FiestTest', () => {
beforeEach(async () => {
await device.reloadReactNative()
})
it('Shoudl find the phoneInput field and the init value as "09"', async () => {
await expect(element(by.id('LoginPage-phoneInput'))).toBeVisible()
await element(by.id('LoginPage-phoneInput')).typeText('09991234567')
await expect(element(by.id('LoginPage-loginGuideTxt'))).toBeVisible()
await element(by.id('LoginPage-loginBtn')).tap()
})
it('Dummy1"', async () => {
await device.reloadReactNative()
})
it('Dummy2', async () => {
await device.reloadReactNative()
})
it('Dummy3', async () => {
await device.reloadReactNative()
})
})
mocha.opts看起来像这样:
/* eslint-env node, mocha */
require('babel-polyfill')
const detox = require('detox')
const config = require('../package.json').detox
before(async () => {
await detox.init(config)
})
after(async () => {
await detox.cleanup()
})
非常感谢您的帮助!
答案 0 :(得分:3)
我运行了以下命令,它解决了构建问题:
watchman watch-del-all; npm start -- --reset-cache
答案 1 :(得分:0)
在我的react native项目中实现排毒时,我遇到了这个问题。 我已经通过使用最新修复project.pbxproj文件修复了它 基本上固定了许可证配置。
答案 2 :(得分:0)
这为我解决了这个问题:
detox clean-framework-cache && detox build-framework-cache