ReactiveCocoa:你如何对RACCommand进行单元测试?

时间:2015-07-26 08:11:42

标签: ios unit-testing reactive-cocoa

MVVM pattern中,ViewModel发出RACCommandView绑定RACCommand的按钮,但如何测试RACCommand

我有两个方面需要测试:

  • 在某些情况下,应启用RACCommand
  • 触发该命令,并在命令触发时查看ViewModel是否完成其工作

如何测试这些案例?

1 个答案:

答案 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)最终beYesbeNo

您还可以stub signalBlock命令RACCommand添加{{1}}界面的其他类别,并做一些神奇的事情。