我正在尝试使用 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 以某种方式连接了两次。在那里遇到问题的人通过放弃 CocoaPods 解决了这个问题。这似乎不对。有没有人得到这个工作?
为了完整起见,我的 Podfile 是:
platform :ios, '6.0'
pod 'ReactiveCocoa'
target :test do
link_with 'PollVaultTests'
pod 'Kiwi/XCTest'
end