2017-12-07 1 views
2

내 React Native 프로젝트에서 종단 간 테스트를 실행하려면 Detox을 사용하고 있습니다. 또한 pretender.js를 사용하여 API 요청을 모의하고 있습니다. 앱이 현재 "테스트"모드에 있는지 알 수있는 방법을 찾기 위해 고심하고 있습니다.디톡스가 테스트를 실행 중임을 알리는 방법은 무엇입니까?

env 변수를 전달하여 (그리고 babel-transform-inline-environment-variables을 사용하여) 요청을 조롱해야하는지 알았지 만, 우리 릴리스 빌드에서는 shim.js이 나옵니다.

해독이 앱을 시작했다고 알리는 방법이 있습니까 &은 JS 내에서 테스트를 실행 중입니까? 이상적으로 나는 테스트 시간이나 커맨드 라인 (TESTING=true react-native start 또는 __TESTING__)에서 전달 된 어떤 종류의 변수를 찾고 있습니다.

답변

2

react-native-config을 사용해보십시오. 여기에 react-native-config와 함께 Managing Configuration in React Native에 관한 좋은 기사가 있습니다.

또한 react-native-config를 사용하여 테스팅 중에 루프 애니메이션을 비활성화하는 방법에 대한 실제 예제를 사용하여 animated-button-block-the-detox 응답을 제공했습니다.

기본 아이디어는 모든 다른 빌드 환경 (개발, 생산, 테스트 등)에 대한 .env 구성 파일을 만드는 것입니다. 이것들은 Javascript, Objective-C/Swift 또는 Java에서 액세스 할 수있는 구성 변수를 보유합니다.

$ ENVFILE=.env.staging react-native run-ios # bash

그리고이 package.json 파일의 예입니다 해독을 위해 .env의 설정 파일을 사용 당신은 다음 응용 프로그램을 빌드 할 때 사용할 설정 파일을 .env의 지정

앱 만들기

"detox": { 
    "specs": "e2e", 
    "configurations": { 
    "ios.sim.release": { 
     "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/example.app", 
     "build": "ENVFILE=.env.production export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -project ios/example.xcodeproj -scheme example -configuration Release -sdk iphonesimulator -derivedDataPath ios/build", 
     "type": "ios.simulator", 
     "name": "iPhone 5s, iOS 10.3" 
    }, 
    "ios.sim.test": { 
     "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app", 
     "build": "ENVFILE=.env.testing xcodebuild -project ios/example.xcodeproj -scheme example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build -arch x86_64", 
     "type": "ios.simulator", 
     "name": "iPhone 5s, iOS 10.3" 
    } 
    } 
} 
관련 문제