使用XCTest测试RACSignals

Rob*_*egg 8 objective-c mvvm ios reactive-cocoa

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

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

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

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

现在,信号在viewModel和中完美地工作viewController- 我现在只想test case为这些信号创建一个.

Mic*_*uba 1

您可以使用+[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");
}
Run Code Online (Sandbox Code Playgroud)