1

私はReactiveCocoaでMVVMを使用しており、テストにはOCMockitoを使用しています。ViewController A と ViewController B があるとします。A は B へのセグエを実行する必要があります。これが発生したときに、A が最初に代入を介して必要なデータ (「モデル」) を B に渡すことを確認したいと思います。

B次のようになります。

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

View Controller のどこかに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 に答える