使用XCTest

时间:2015-08-20 20:01:23

标签: ios objective-c mvvm reactive-cocoa

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

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

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

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

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

1 个答案:

答案 0 :(得分: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");
}