Как я могу использовать OCMockito для проверки поведения свойства только для чтения?
Я использую MVVM с ReactiveCocoa и OCMockito для тестирования. Предположим, у меня есть ViewController A и ViewController B. A должен выполнить переход к B. Я хочу убедиться, что когда это происходит, 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 инициализируется методом init viewController.
Как я могу макет ViewModel здесь?
Я мог бы частично макет viewControllerB, чтобы вернуть макет viewModel
, который я затем проверяю, но https://github.com/jonreid/OCMockito/issues/38 говорит, что частичные насмешки с тех пор были удалены. Зачем?!
1 ответ
Я бы изменил init
принять ViewModel и просто назначить его только для чтения. После этого вы можете смоделировать модель и проверить вызов установщика.
Я не большой поклонник модификации API только для того, чтобы иметь возможность тестировать класс, но, вероятно, это изменение естественно для вашего дизайна.
Что я тоже замечаю - использование двойных точек. Это довольно очевидный знак для меня о необходимых изменениях в API