Мне нужно проверить переменную экземпляра в Objective C.
У меня есть этот фрагмент в myViewController.m
@implementation myViewController
{
NSView *myView;
}
Мне нужно добавить тест в myViewControllerTest.mm
, который проверяет случай, когда myView.window
оказывается nil
-(void) myTest
{
// 1. assert condition 1 is true
// 2. mock myView.window and set it to nil OR set myView.window directly to nil
// 3. assert condition 1 is false
}
. Я хотел бы знать, как лучше всего выполнить шаг 2 в тесте. Подходы, которые я пробовал:
- Добавить явный установщик
- (void)setMyView:(NSView*)myView
только для целей модульного тестирования и использовать его в myTest. У меня такое ощущение, что это не лучший способ. - сделать
myView
как свойство и поместить его в myViewController.h
, чтобы у меня был сеттер без его явного определения. - Неудачная попытка насмешки с использованием OCMock. (необходимо дальнейшее изучение)
Пожалуйста, предложите лучший подход и каковы его плюсы и минусы. Спасибо!
Изменить: ответ, который я использовал в своем тестовом файле.
[myViewController setValue:nil forKeyPath:@"myViewControl.window"];
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/KeyValueCoding/BasicPrinciples.html# // apple_ref / doc / uid / 20002170-BAJEAIEE