Я пытаюсь выяснить, есть ли способ проверить макет iOS-представления в модульных тестах при использовании автозапуска. Сейчас я пытаюсь просто инициализировать контроллер представления, а затем проверять рамки просмотров. Тем не менее, кадр на каждом представлении остается источником = (x = 0, y = 0) size = (width = 0, height = 0).Тестирование автозапуска с XCTest
- (void)setUp {
[super setUp];
_viewController = [[AddPlayerViewController alloc] init];
_viewController.view.frame = CGRectMake(0, 0, 320, 460);
[_viewController view];
}
- (void)testViewsAreInsideWindow {
[self checkIfViewIsInsideWindow:_viewController.txtfNewPlayer];
[self checkIfViewIsInsideWindow:_viewController.btnNewPlayer];
[self checkIfViewIsInsideWindow:_viewController.tblPlayers];
}
- (void)checkIfViewIsInsideWindow:(UIView *)view {
CGRect windowFrame = _viewController.view.frame;
CGRect viewFrame = view.frame;
XCTAssertTrue(CGRectContainsRect(windowFrame, viewFrame));
}
Я попытался добавить
[_viewController.view needsUpdateConstraints];
или
[_viewController.view updateConstraints];
или
[_viewController updateViewConstraints];
или
[_viewController viewWillAppear:YES];
, но ни один из них не помог.
Возможно ли запустить автозапуск при использовании XCTest?
Вы пробовали 'setNeedsLayout', а затем' layoutIfNeeded'? Вы можете получить макет для запуска в тестах, я делаю это здесь: https://github.com/jrturton/UIView-Autolayout/blob/master/Example/AutoLayoutTests/AutoLayoutConstraintsSpec.m, но у этого нет контроллера вида, просто Просмотры. – jrturton
Это сработало отлично. Спасибо. – Rubberduck
ОК, я добавлю его в качестве ответа – jrturton