Как ждать завершения анимации от юнит-тестов - PullRequest
2 голосов
/ 15 августа 2011

Я использую OCUnit XCode для написания модульных тестов, и мои тесты вызывают метод, который выполняет анимацию.Я хочу, чтобы метод теста продолжался только после завершения анимации.

Метод, выполняющий анимацию, не имеет делегата анимации, и я не думаю, что он должен иметь.

Как мне дождаться окончания анимации в тестовом методе, не задавая делегата анимации?

1 Ответ

6 голосов
/ 13 ноября 2013

Вы не хотите на самом деле ждать анимации; это займет время анимации, чтобы запустить. Если у вас есть несколько тысяч тестов, это может сложиться.

Более эффективным является макетирование статического метода UIView в категории, чтобы он немедленно вступил в силу. Затем включите этот файл в цель теста (но не в цель приложения), чтобы категория была включена только в ваши тесты. Мы используем:

#import "UIView+SpecFlywheel.h"

@implementation UIView (SpecFlywheel)

#pragma mark - Animation
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion {
    if (animations)
        animations();
    if (completion)
        completion(YES);
}

@end

Вышеприведенное просто выполняет блок анимации немедленно и блок завершения немедленно, если он также предоставлен.

...