使用Kiwi的KWCaptureSpy的实际例子是什么?

时间:2015-05-06 17:03:16

标签: ios objective-c unit-testing testing kiwi

我无法理解使用Kiwi' 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

1 个答案:

答案 0 :(得分:0)

以下是可能的情况:

  • 您正在使用RESTful网络服务,该网络服务允许您通过使用您要更新的详细信息POST /user来更新您的个人资料。
  • 你有一个HNKUser类声明了一个调用webservice的updateFirstName:lastName:方法
  • 您希望确保该方法仅将{em> firsNamelastName发送到服务器(例如,它也不会发送生日和其他详细信息)< / LI>

假设讨论中的方法看起来像这样(为简单起见,我省略了完成处理程序):

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

然后您可能希望捕获第二个参数并确保它仅包含firstNamelastName字段,并且这些字段也具有正确的值。

作为一个注释,建议在嘲笑中使用间谍,从你的例子中我认为你不是。