2
我正在使用Xcode的OCUnit編寫單元測試,而我的測試調用了執行動畫的方法。 我希望測試方法只在動畫完成後才能繼續。如何等待動畫完成單元測試
執行動畫的方法沒有動畫委託,我不認爲它應該有。
我該如何等待動畫在測試方法中結束,而無需設置動畫委託?
我正在使用Xcode的OCUnit編寫單元測試,而我的測試調用了執行動畫的方法。 我希望測試方法只在動畫完成後才能繼續。如何等待動畫完成單元測試
執行動畫的方法沒有動畫委託,我不認爲它應該有。
我該如何等待動畫在測試方法中結束,而無需設置動畫委託?
你不想實際等待動畫;那需要花費時間來運行動畫。如果你有幾千個測試,這可以加起來。
更有效的方法是模擬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
上面只是簡單地執行動畫塊,如果提供它也立即執行完成塊。
很高興幫助! – tooluser
這聽起來不像你在完成任務後完成任何事情,因爲你沒有委託,所以爲什麼要等待它完成? –
這聽起來像是一個模擬對象的好地方。 –