如何使用OCMockito验证readonly属性上的行为?

时间:2014-03-19 15:22:47

标签: objective-c readonly ocmockito partial-mocks

我正在使用MVVM和ReactiveCocoa,以及OCMockito进行测试。假设我有一个ViewController A和ViewController B.需要执行一个segue到B.我想验证当发生这种情况时,A首先通过赋值将必要的数据('model')传递给B.

B看起来像这样:

@interface ViewControllerB : UITableViewController
@property(nonatomic, readonly) ViewModel *viewModel;
@end

在视图控制器A的某处,有一个声明:

 viewControllerB.viewModel.model = newModel;   // passes new data along for B to display

我想验证此分配是否正在发生,但viewModel属性是只读的。 viewModel由viewController的init方法初始化。

我怎么能在这里模拟出viewModel?

我可以部分模拟viewControllerB来返回一个模拟viewModel,然后我验证,但是https://github.com/jonreid/OCMockito/issues/38表示已经删除了部分模拟。为什么呢?!

1 个答案:

答案 0 :(得分:0)

我会修改init以接受'ViewModel'并将其分配给readonly属性。在此之后,您可以模拟模型并验证setter调用。

我不是一个很大的粉丝来修改API只是为了能够测试类,但可能这种改变对你的设计很自然。

我也注意到了 - 双点用法。对于我来说,这显然是关于API

的必要更改的标志