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
デベロップメントを持っていないので、アニメーションが終了した後に何かを実行するようには聞こえません。なぜそれが終了するのを待つのですか? –
これはモックオブジェクトのための良い場所のように聞こえる。 –