アニメーションを起動するボタンを押し、アニメーションが完了すると、ラベルのテキストを変更します。ボタンが押されると、最終的にラベルのテキストが適切に変更されることを確認するテストを書きたいと思います。
ボタン押下 IBAction の実装は を使用します[UIView animateWithDuration:animations:completion:]
。明らかに、単体テストでアニメーションが完了するまで実際に 0.5 秒待たされることは望ましくありません。
UIView をモックすることも考えましたが、View Controller への依存関係として UIView を挿入するのは奇妙に思えます。さらに、私が使用しているモッキング フレームワーク (OCMockito) は、クラス メソッドのモッキングではうまく機能しないようです。
また、メソッドのスウィズリングまたは のテスト カテゴリの記述、およびブロックの後に続くブロックUIView
を呼び出すだけの実装を使用することについても考えました。それは私には少し壊れているようです。UIView でクラス メソッドの実装をオーバーライドすると、予期しない結果が生じるのではないかと心配しています。animations:
completion:
TDD を初めて使用するので、ここでどのようなベスト プラクティスがあるかわかりません。これは「UI のいじり」と見なされるべきコードの 1 つなので、テストしないままにしておいてもよいのでしょうか? または、私が見逃しているこれをテストするためのより明白な方法はありますか?