Запуск юнит-теста, чтобы увидеть, подключен ли UIButton к IBAction через раскадровку
Я пытаюсь создать несколько тестов в Xcode для моих контроллеров представления, включая тесты для проверки IBOutlets и IBActions. Они работают нормально, если я использую базовый контроллер вида + файл XIB, но если я использую файл раскадровки, то действия, по-видимому, не связаны.
Вот настройки:
- (void)setUp
{
[super setUp];
UIStoryboard *settingsStoryboard = [UIStoryboard storyboardWithName:@"SettingsStoryboard" bundle:nil];
self.viewController = [settingsStoryboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];
[self.viewController view];
}
И затем вот тест (XCTest, OCHamcrest и OCMock, они все терпят неудачу):
- (void)testPartialDatabaseRefreshButtonSelector
{
NSArray *actions = [self.viewController.partialDatabaseRefreshButton actionsForTarget:self.viewController forControlEvent:UIControlEventTouchUpInside];
// actions is nil!!
// XCTest:
XCTAssertTrue([actions containsObject:NSStringFromSelector(@selector(partialDatabaseRefreshButton_onTouchUpInside:))], @"partialDatabaseRefreshButton has no selector");
// FAILS
// OCHamcrest:
assertThat([self.viewController.partialDatabaseRefreshButton actionsForTarget:self.viewController forControlEvent:UIControlEventTouchUpInside], contains(@"partialDatabaseRefreshButton_onTouchUpInside:", nil));
// FAILS
// OCMock:
id mock = [OCMockObject partialMockForObject:self.viewController];
[[mock expect] partialDatabaseRefreshButton_onTouchUpInside:[OCMArg any]];
//simulate button press
[self.viewController.partialDatabaseRefreshButton sendActionsForControlEvents:UIControlEventTouchUpInside];
[mock verify];
// FAILS
}
Очевидно, это не связано с тем, что я использую для тестирования, а с тем, что кнопки не имеют никаких действий, связанных с ними. Тем не менее, когда я запускаю приложение, кнопки работают нормально.
Я что-то пропустил?