我无法理解使用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
?
答案 0 :(得分:0)
以下是可能的情况:
POST /user
来更新您的个人资料。HNKUser
类声明了一个调用webservice的updateFirstName:lastName:
方法firsName
和lastName
发送到服务器(例如,它也不会发送生日和其他详细信息)< / LI>
假设讨论中的方法看起来像这样(为简单起见,我省略了完成处理程序):
- (void)updateFirstName:(NSString*)firstName lastName:(NSString*)lastName {
// preparation code
// ...
[serverApi POST:@"/user" parameters:someParamsYouveBuiltInTheMethod completion:someCompletionHandler];
// ...
}
然后您可能希望捕获第二个参数并确保它仅包含firstName
和lastName
字段,并且这些字段也具有正确的值。
作为一个注释,建议在嘲笑中使用间谍,从你的例子中我认为你不是。