在MVVM pattern
中,ViewModel
发出RACCommand
和View
绑定RACCommand
的按钮,但如何测试RACCommand
?
我有两个方面需要测试:
RACCommand
ViewModel
是否完成其工作如何测试这些案例?
答案 0 :(得分:0)
我使用Kiwi进行测试,与ReactiveCocoa
一起使用非常简单。在您的情况下,Kiwi's async testing会很方便,例如使用shouldEventually
来预期值会发生变化。例如。 view
隐藏执行信号的副作用。
[[expectFutureValue(theValue(view.hidden)) shouldEventually] beYes];
关于启用的信号,您也可以订阅该信号。因此,您创建了一个订阅块beforeAll
:
void (^buttonEnabledBlock)(NSNumber *) = ^(NSNumber *enabled) {
_blockEnabled = enabled.boolValue;
};
现在订阅测试用例中的命令启用信号:
[subject.myButtonCommand.enabled subscribeNext:buttonEnabledBlock];
然后您可以expectFutureValue
theValue(_blockEnabled)
最终beYes
或beNo
。
您还可以stub
signalBlock
命令RACCommand
添加{{1}}界面的其他类别,并做一些神奇的事情。