0

Kiwi's を使用する実用的なアプリケーションが何であるかを理解するのに苦労していますKWCaptureSpy。私はこのようなことをして、それを渡すことができました:

 __block id successJSON;

  KWCaptureSpy *successBlockSpy =
      [HNKServer captureArgument:@selector(GET:parameters:completion:)
                         atIndex:2];

  [[HNKServer sharedServer] GET:@""
                     parameters:nil
                     completion:^(id JSON, NSError *error) {
                       successJSON = JSON;
                     }];

  HNKServerRequestCallback successBlock = successBlockSpy.argument;
  successBlock(@"JSON", nil);

  [[successJSON shouldEventually] equal:@"JSON"];

しかし、それは実際には何もテストしていないようです。Kiwi のドキュメントの例は役に立ちません: https://github.com/kiwi-bdd/Kiwi/wiki/Mocks-and-Stubs#capturing-arguments

実際に使用する正当な理由がある人はいKWCaptureSpyますか?

4

1 に答える 1

0

考えられるシナリオは次のとおりです。

  • 更新する詳細を使用してプロファイルを更新できる RESTful Web サービスを使用していますPOST /user
  • Web サービスを呼び出すメソッドをHNKUser宣言するクラスがあるupdateFirstName:lastName:
  • メソッドがandのみをサーバーに送信することを確認したい(たとえば、誕生日やその他の詳細も送信しない)firsNamelastName

説明中のメソッドが次のようになっているとします (簡単にするために、完了ハンドラーは省略しています)。

- (void)updateFirstName:(NSString*)firstName lastName:(NSString*)lastName {
    // preparation code
    // ...
    [serverApi POST:@"/user" parameters:someParamsYouveBuiltInTheMethod completion:someCompletionHandler];
    // ...
}

次に、2 番目の引数をキャプチャして、フィールドfirstNamelastNameフィールドのみが含まれていること、およびそれらのフィールドに適切な値が含まれていることを確認することができます。

注として、スパイはモックで使用することをお勧めします。あなたの例から、あなたの例はそうではないと思います。

于 2015-05-07T19:35:56.383 に答える