0

単体テストを使用します。また、サーバーからデータを取得するために非同期リクエストを使用します。私の質問は、このリクエストをどのようにテストできるかということです。これで、データの取得を待たずにテストが機能するようになりました。

サーバーからデータを取得するために ASIHTTPRequest を使用しています。リクエストを確認する方法があります

- (void)testSignIn {

    self.request = [[Requests alloc] init];
    [self.request signInWithEmail:@"some.email@gmail.com" andPassword:@"123456"];

}

ここで問題があります。このメソッドで STFail を挿入する前に応答を取得すると、毎回エラーで完了します (データの取得には時間がかかり、これは再同期ではないため)

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

単体テストでネットワーク コードを本当にテストしたい場合: 非同期イベントの待機を実際にサポートする GHUnit の使用に切り替えます。

GHUnitの例

しかし、実際には、これを行うべきではありません。上記のテストでは、何をテストしていますか? バックエンド サービスですか、それとも Requests クラスですか。

厳密に言えば、ユニット テストでは、データを取得するためにネットワークに送信されていないコードのユニットをテストする必要があります。

可能であれば、テストを再構築して、関数をテストする静的テスト データを提供します。テストの信頼性と一貫性をできる限り高めたいと考えています。ネットワークを導入することで、一貫性のないテスト (ネットワークがダウンしている場合や遅い場合) に備えることになり、テストが無効になる可能性があります (チームで作業している場合)。

于 2012-07-29T20:41:26.100 に答える