0

次のようなインターフェースを持つ API ラッパーの単体テストを書くのに苦労しています

- (void)publish:(id<MyCustomRequest>)aRequest completionHandler:(void (^)(id<MyCustomResponse>, NSError *)) completionBlock

内部でこのメソッドを呼び出します。

NSURLConnection sendAsynchronousRequest:queue:completionHandler

代わりにデリゲートを使用したくありません。公開された API は sendAsynchronousRequest メソッドにはるかに快適に適合するためです (また、リクエストごとに個別のアキュムレータ オブジェクトを必要としません)。さらに、残りのコード全体のモックには OCMockito を使用していますが、これは部分的なモックやクラス メソッドのモックをサポートしていません。

この機能をテストできる他のテスト手法はありますか? 代わりにデリゲートを使用する必要がありますか?

4

1 に答える 1

0

デリゲートベースのAPIを使用します。私はそれがより多くのコードであることを理解していますが、便利なAPIは明らかにあなたのニーズを満たすのに十分ではありません(つまり、OCMockitoでモック可能です)。さらに、リクエストごとに1つの補助を割り当てる「オーバーヘッド」について心配する必要はありません。あなたの呼び出しのおかげで、システムフレームワークの舞台裏で何十ものオブジェクトが割り当てられると私は確信しています+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]。心配する必要はありません。とはいえ、1つのオブジェクトが複数のリクエストのデリゲートになる可能性があるため、必ずしも複数のオブジェクトを用意する必要はありません。

于 2013-02-05T23:49:27.387 に答える