Запуск юнит-теста, чтобы увидеть, подключен ли 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
}

Очевидно, это не связано с тем, что я использую для тестирования, а с тем, что кнопки не имеют никаких действий, связанных с ними. Тем не менее, когда я запускаю приложение, кнопки работают нормально.

Я что-то пропустил?

0 ответов

Другие вопросы по тегам