2

我正在使用 Xcode 的 OCUnit 编写单元测试,我的测试调用了一个执行动画的方法。我希望只有在动画完成后才能继续测试方法。

执行动画的方法没有动画委托,我认为它不应该有。

如何在不设置动画委托的情况下等待动画在测试方法中结束?

4

1 回答 1

5

您不想真正等待动画;这将花费动画运行所需的时间。如果你有几千个测试,这可以加起来。

更有效的是在一个类别中模拟出 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

以上只是立即执行动画块,如果也提供了完成块,则立即执行。

于 2013-11-13T01:23:11.690 回答