2013-12-12 6 views
1

종속성 관리를 위해 CocoaPods를 사용하여 테스트를 위해 ReactiveCocoa 및 Kiwi를 사용하여 새 프로젝트를 설정하려고합니다.ReactiveCocoa, Kiwi 및 Cocoapods를 함께 사용하면 "터플이 아닙니다"예외가 발생했습니다.

사용자가 사용자 이름과 비밀번호를 입력 할 때까지 로그인 버튼이 활성화되지 않은 일반적인 로그인 화면에 대해 첫 번째 테스트가 설정되었습니다. 예제 코드의 일부는 그냥 간단 버전 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    RAC(self.loginButton, enabled) = [RACSignal combineLatest:@[self.userNameField.rac_textSignal, 
                  self.passwordField.rac_textSignal] 
                 reduce:^(NSString *username, NSString *password) { 
     return @(username.length > 0 && password.length > 0); 
    }]; 
} 

문제는 내가 내 테스트를 실행할 때, 나는 다음과 같은 오류 얻을 수 있습니다 : 그래서, 물론

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Value from stream <RACDynamicSignal: 0xe3735a0> name: +combineLatest: (
    "<RACDynamicSignal: 0xe368c50> name: <UITextField: 0xe3707a0> -rac_textSignal", 
    "<RACDynamicSignal: 0xe372d80> name: <UITextField: 0xe36aef0> -rac_textSignal" 
) is not a tuple: <RACTuple: 0xe377a40> (
    "", 
    "" 
)' 

는, 그것이 RACTuple입니다 그것은 단지 혼란 스럽다.

내 연구 ReactiveCocoa에 다음과 같은 문제를 설정 :

https://github.com/ReactiveCocoa/ReactiveCocoa/issues/901

진단이 ReactiveCocoa 두 번 든에 연결되어지고 있음이있다. 문제가있는 사람이 CocoaPod를 버림으로써 문제를 해결했습니다. 그건 맞지 않아. 아무도이 일을 얻었습니까?

완성도를 들어, 내 Podfile은 다음과 같습니다

platform :ios, '6.0' 

pod 'ReactiveCocoa' 

target :test do 
    link_with 'PollVaultTests' 
    pod 'Kiwi/XCTest' 
end 

답변

4

는 글쎄, 난 내 자신의 질문에 대한 답을 얻을.

포드가 Podfile의 "글로벌"레벨에 나열되면 CocoaPod는 모든 대상에 포드를 포함시킵니다.

이 경우 결과는 내 기본 프로젝트가 CocoaPods에 링크되어 있으며 내 테스트 대상도 마찬가지입니다.

내 테스트 대상이 내 프로젝트에 주입되어 테스트를 실행하면 ReactiveCocoa가 두 번 연결됩니다. 따라서 RACTuple이라는 클래스가 두 개 있습니다. ReactiveCocoa 코드는 내부적으로 인수가 RACTuple인지 확인하기 위해 잘못된 클래스 복사본을 검사하고 거짓 부정 결과를냅니다. :exclusive => true 부분은 Cocoapods는 뉴질랜드를 포함하는 알 것입니다

platform :ios, '6.0' 

pod 'ReactiveCocoa' 

target :test, :exclusive => true do 
    link_with 'PollVaultTests' 
    pod 'Kiwi/XCTest' 
end 

그건 :

이 솔루션은 Podfile 내 테스트 대상 만 테스트 포드과 같이 에 연결하도록 구성되어 있는지 확인하는 것입니다 내 테스트 대상에서 테스트 프레임 워크. 문제 해결됨!

+0

잠재적 인 얼굴 손가 :이 작업을하려면'pod install '을 다시 실행해야합니다. – eremzeit