Я использую XCtest для проверки заголовка представления. Пытаюсь выработать привычку сначала писать тесты. Настройка выглядит так
- (void)setUp
{
[super setUp];
self.appDelegate = [[UIApplication sharedApplication] delegate];
self.tipViewController = self.appDelegate.tipViewController;
self.tipView = self.tipViewController.view;
self.settingsViewController = self.appDelegate.settingsViewController;
self.settingsView = self.settingsViewController.view;
}
Проблема в "settingsViewController". У меня есть две функции для фактического теста:
- (void) testTitleOfMainView{
XCTAssertTrue([self.tipViewController.title isEqualToString:@"Tip Calculator"], @"The title should be Tip Calculator");
//why does this not work?
// XCTAssertEqual(self.tipViewController.title, @"Tip Calculator", @"The title should be Tip Calculator");
}
- (void) testTitleOfSettingsView{
//make the setttings view visible
[self.tipViewController onSettingsButton];
//test the title
XCTAssertTrue([self.settingsViewController.title isEqualToString:@"Settings"], @"The title should be Settings");
}
"testTitleOfMainView" работает. Но «testTitleOfSettingsView терпит неудачу, поскольку self.settingsViewController равен нулю. Я могу понять, почему. Представление еще не было инициализировано. Поэтому я попытался отправить сообщение на главный контроллер, который выводит settignscontroller в поле зрения.
[self.tipViewController onSettingsButton];
Контроллер настроек по-прежнему равен нулю. Должен ли я использовать макеты? Кто-то предложил это для моего другого вопроса xctest - как проверить, загружается ли новое представление при нажатии кнопки
Должен ли я подклассифицировать представление настроек и поднять его вручную? Спасибо.