0

カテゴリを使用してコントローラクラスのメソッドをオーバーライドするSenTestクラスを作成しようとしています。模擬コントローラークラスでSenTestクラスのメソッドを呼び出して、さまざまなテストの動作方法を決定したいと思います。

例えば:

  1. testFooメソッドで変数を設定します。
  2. testFooで、モックコントローラーのオーバーライドされたメソッドを呼び出します。
  3. testFooの動作方法を理解するために、SenTestシングルトンにコールバックしてもらいます。

これは可能ですか、それとも私はばかですか?

4

1 に答える 1

0

これを行う秘訣は、関連付けられた参照を SenTest の場合ではなく、カテゴリ コード内に作成することです。

たとえば、これをカテゴリで宣言します。

 -(void)fakeMethodToSetTestData:(NSDictionary *)data;

そして、そのメソッドで、連想参照を設定して、「自己」に「関連付けられた」データを保存します。

オブジェクトのテスト ケースでこれを呼び出し、データを渡します。

次に、テスト ケースで次のように呼び出します。

-(void)realMethodInCategoryWhichIsBeingOverridden;

このメソッドのカテゴリ実装では、最初のメソッドで設定した連想参照からデータを取得します。

これにより、たとえば、2 番目のメソッドがネットワークにアクセスしてテスト データをコントローラーのコードに返すのを防ぐために、委任チェーンを乗っ取ることができるように、コントローラーにテスト データを設定できます。

于 2011-04-22T15:06:31.773 に答える