gpt4 book ai didi

ios - 如何使用 OCMock 测试是否在完成处理程序 block 内调用了对象的方法?

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:14 25 4
gpt4 key购买 nike

我有一个方法:

@implementation SomeClass

- (void)thisMethod:(ObjectA *)objA {
[APIClient connectToAPIWithCompletionHandler:^(id result){
if (result) [objA methodOne];
else [objA methodTwo];
}];
}

有没有办法验证 methodOnemethodTwo 将在调用 thisMethod: 时调用?基本上我只想 stub connectToAPIWithCompletionHandler: 方法。现在我可以通过调整 connectToAPIWithCompletionHandler: 方法来做到这一点。但我想知道是否有更好的方法。

我发现了类似的问题 here ,但它使用的是实例方法,而在我的例子中是类方法。

最佳答案

试试这个:

- (void)test_thisMethod {
id mockA = [OCMockObject mockForClass:[ObjectA class]];
id mockClient = [OCMockObject mockForClass:[APIClient class]];

// Use class method mocking on APIClient
[[mockClient expect] andDo:(NSInvocation *invocation) {
void (^completion)(id result) = [invocation getArgumentAtIndexAsObject:2];
completion(nil);
}] connectToAPIWithCompletionHandler:OCMOCK_ANY];

[[mockA expect] methodTwo];

[[SomeClass new] thisMethod:mockA];

[mockA verify];
[mockClient verify];
}

请注意,我是直接在浏览器中输入的,但希望它能正常工作。

关于ios - 如何使用 OCMock 测试是否在完成处理程序 block 内调用了对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com