使用 XCTest 测试 RACSignals

Testing RACSignals with XCTest

我在当前的 iOS 应用程序中使用 MVVM 范例。最近,我也开始在项目中使用 ReactiveCocoa。我现在也开始尝试 Unit testing

我面临的问题是如何正确测试我创建的自定义 RACSignal。这是我正在测试的测试信号的示例。此信号与 UItextField 一起使用,将阻止将不需要的字符输入到文本字段中。在这种情况下,我只允许数字:

//Declared like so:
-(RACSignal *)onlyAllowNumbersforTextFieldSignal:(RACSignal *)signal

//used like this: 
 RAC(testTextField, text) = [self.viewModel onlyAllowNumbersforTextFieldSignal:testTextField.rac_textSignal];

现在信号在 viewModelviewController 中完美运行 - 我现在只想为这些类型的信号创建一个 test case

您可以使用 +[RACSignal return:] 方法提供输入信号(而不是文本字段的信号)。然后使用-first方法从视图模型中获取输出信号的值:

- (void)testExample {
  RACSignal *textSignal = [RACSignal return:@"a123"];
  //assuming that you initialized self.viewModel in setUp method of your test case
  NSString *result = [[self.viewModel onlyAllowNumbersforTextFieldSignal:textSignal] first];
  XCTAssertEqualObjects(result, @"123");
}