2017-07-31 87 views
2

我试图使用Wix/Detox来测试我的反应本机应用程序(iOS版本)。我已经成功地跟随在https://github.com/wix/detox/blob/master/docs/Introduction.GettingStarted.md排毒问题:构建失败Ld构建/构建/产品/调试-iphonesimulator

但是说明书(直到“排毒建”),在我的项目目录中运行“排毒打造”的时候,我得到以下错误:

** 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) 

当运行“排毒测试,”我得到了以下错误:

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) 

我在我的项目目录的端到端文件夹中有三个文件s:init.js,mocha.opts和firstTest.spec.js。

firstTest.spec.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('09120710732') 
    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() 
    }) 
}) 

init.js看起来像这样:

/* 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() 
}) 

而mocha.opts看起来像这样:

--recursive --timeout 120000 --bail 

非常感谢您的帮助!

回答

1

我跑到下面的命令,它解决了构建问题:

watchman watch-del-all; npm start -- --reset-cache