使用 Kiwi 的 KWCaptureSpy 的实际例子是什么?
What is a practical example of using Kiwi's KWCaptureSpy?
我无法理解使用 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
吗?
这是一种可能的情况:
- 您正在使用 RESTful 网络服务,该服务允许您通过
POST /user
更新您要更新的详细信息来更新您的个人资料。
- 您有一个
HNKUser
class 声明了一个 updateFirstName:lastName:
调用网络服务的方法
- 您要确保该方法将 仅
firsName
和 lastName
发送到服务器(例如,它不会同时发送生日和其他细节)
假设讨论中的方法如下所示(为简单起见,我省略了完成处理程序):
- (void)updateFirstName:(NSString*)firstName lastName:(NSString*)lastName {
// preparation code
// ...
[serverApi POST:@"/user" parameters:someParamsYouveBuiltInTheMethod completion:someCompletionHandler];
// ...
}
那么您可能想要捕获第二个参数并确保它仅包含 firstName
和 lastName
字段,并且这些字段具有正确的值。
请注意,建议在模拟中使用间谍,从您的示例来看,我认为您的不是。
我无法理解使用 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
吗?
这是一种可能的情况:
- 您正在使用 RESTful 网络服务,该服务允许您通过
POST /user
更新您要更新的详细信息来更新您的个人资料。 - 您有一个
HNKUser
class 声明了一个updateFirstName:lastName:
调用网络服务的方法 - 您要确保该方法将 仅
firsName
和lastName
发送到服务器(例如,它不会同时发送生日和其他细节)
假设讨论中的方法如下所示(为简单起见,我省略了完成处理程序):
- (void)updateFirstName:(NSString*)firstName lastName:(NSString*)lastName {
// preparation code
// ...
[serverApi POST:@"/user" parameters:someParamsYouveBuiltInTheMethod completion:someCompletionHandler];
// ...
}
那么您可能想要捕获第二个参数并确保它仅包含 firstName
和 lastName
字段,并且这些字段具有正确的值。
请注意,建议在模拟中使用间谍,从您的示例来看,我认为您的不是。