gpt4 book ai didi

ios - OCMock stub block

转载 作者:行者123 更新时间:2023-11-29 01:57:50 24 4
gpt4 key购买 nike

我尝试 stub 此 AFNetworking 方法并测试错误情况:

- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;

我的测试方法如下:

it(@"should return error when remote api fails", ^{
id mock = OCMClassMock([AFHTTPRequestOperation class]);
OCMStub([mock setCompletionBlockWithSuccess:[OCMArg any] failure:[OCMArg any]]).andDo(^(NSInvocation *invocation) {
void (^failureBlock)(AFHTTPRequestOperation *operation, NSError *error) = nil;
[invocation getArgument:&failureBlock atIndex:3];
NSDictionary *details = @{ NSLocalizedDescriptionKey : [OCMArg any] };
NSError *err = [NSError errorWithDomain:@"Some Domain" code:401 userInfo:details];
failureBlock(nil, err);
});
[API getWeeklyEvents].catch(^(NSError *err) {
error = [err copy];
});
expect(error).will.beTruthy();
});

此外[API getWeeklyEvents]方法使用PromiseKit。这会是一个问题吗?

我尝试使用 this但它不起作用并使用旧的 OCMock 语法。

最佳答案

因此,您已将 setCompletionBlockWithSuccess:failure: 方法与实际调用故障处理程序的 block 打桩。这意味着,就 OCMock 而言,在其他人调用 setCompletionBlockWithSuccess:failure 之前,什么都不会发生。

现在该方法是一个实例方法,必须在 mock 上调用。调用的唯一方法是 getWeekEvents。我不确定那将如何调用该 set 方法,因为它需要对模拟的引用。

老实说,我认为您必须重新设计测试。

关于ios - OCMock stub block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655380/

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