1

我正在使用带有 ReactiveCocoa 的 MVVM 和 OCMockito 进行测试。假设我有一个 ViewController A 和 ViewController B。A 需要对 B 执行 segue。我想验证当这种情况发生时,A 首先通过分配将必要的数据(“模型”)传递给 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 以返回一个 mock viewModel,然后我对其进行验证,但https://github.com/jonreid/OCMockito/issues/38说部分模拟已被删除。为什么?!

4

1 回答 1

0

我会修改init为接受“ViewModel”并将其分配给只读属性。在此之后,您可以模拟模型并验证设置器调用。

我不喜欢修改 API 只是为了能够测试类,但这种更改可能对您的设计来说是自然的。

我还注意到 - 双点的使用。这对我来说是非常明显的关于 API 必要更改的迹象

于 2014-04-01T16:16:36.940 回答