2011-08-15 15 views
2

XcodeのOCUnitを使用してユニットテストを作成しています。テストでは、アニメーションを実行するメソッドが呼び出されます。 アニメーションが完了した後にのみテストメソッドを続行します。ユニットテストでアニメーションが終了するのを待つ方法

アニメーションを実行するメソッドにはアニメーションデリゲートがありません。アニメーションデリゲートはありません。

アニメーションデリゲートを設定せずに、アニメーションがテストメソッドで終了するのを待つ方法はありますか?

+0

デベロップメントを持っていないので、アニメーションが終了した後に何かを実行するようには聞こえません。なぜそれが終了するのを待つのですか? –

+0

これはモックオブジェクトのための良い場所のように聞こえる。 –

答えて

6

アニメーションを実際に待つ必要はありません。アニメーションが実行されるのにかかる時間がかかるでしょう。数千のテストがある場合は、これが足りるかもしれません。

より効果的なのは、カテゴリ内の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 

上記はアニメーションブロックをただちに実行し、完了ブロックはそれが提供されている場合はただちに実行します。

+0

助けてくれてうれしい! – tooluser

関連する問題