使用 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];
现在信号在 viewModel
和 viewController
中完美运行 - 我现在只想为这些类型的信号创建一个 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");
}
我在当前的 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];
现在信号在 viewModel
和 viewController
中完美运行 - 我现在只想为这些类型的信号创建一个 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");
}