Это зависит от того, что вы пытаетесь проверить.Если вы хотите убедиться, что ваши привязки настроены правильно, прочитайте статью Криса Хансона о модульном тестировании интерфейса Cocoa .Лично я считаю, что это излишне и приводит к увеличению количества тестового кода, который не очень полезен.Но это только мои 2 цента.
Если вы на самом деле попытаетесь взаимодействовать с этими элементами интерфейса в своем тесте, вы даже столкнетесь с множеством ошибок тестирования, как вы обнаружили, особенно с UIActionSheets и UITableViews.Ваша цель должна состоять в модульном тестировании поведения вашего контроллера, а не поведения объектов пользовательского интерфейса Apple.Лучшее, что я нашел, - это использовать OCMock для проверки элементов интерфейса и проверки того, что контроллер выполняет ожидаемые вызовы для них.Вот несколько примеров:
-(void)testClickingAButtonHidesAView {
//setup
id mockViewToHide = [OCMockObject mockForClass:[UIView class]];
[[mockViewToHide expect] setHidden:YES];
[controller setSomeView:mockViewToHide];
// hideButtonClicked is an IBAction that is the hide button's target
[controller hideButtonClicked];
[mockViewToHide verify];
}
-(void)testActionSheetPublishClick {
// ModelManager is the controller's dependency, which publishes Items
id mockModelManager = [OCMockObject mockForClass:[ModelManager class]];
[controller setModelManager:mockModelManager];
// this doesn't really need to be mocked, but it's a convenient way to create
// a reference you can validate in expect:
id mockItem = [OCMockObject mockForClass:[Item class]];
[controller setCurrentItem:mockItem];
// when the user clicks "Publish" (the first button on the action sheet),
// the controller should publish the current item
[[mockModelManager expect] publishItem:mockItem];
// stub object so I know which action sheet was clicked
id mockPublishActionSheet = [OCMockObject mockForClass:[UIActionSheet class]];
[controller setPublishConfirmation:mockPublishActionSheet];
// simulate action sheet click
[controller actionSheet:mockPublishActionSheet didDismissWithButtonIndex:0];
[mockModelManager verify];
}