首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OCMockito的存根方法

使用OCMockito的存根方法
EN

Stack Overflow用户
提问于 2018-12-28 18:16:56
回答 1查看 71关注 0票数 0

嗨,我在测试一个在运行时发送对象消息的方法时遇到了一个问题,测试失败了,并显示了这个错误:

代码语言:javascript
复制
failed: caught "NSInvalidArgumentException", "*** -[NSProxy doesNotRecognizeSelector:sendMessage:] called!"

这是我的测试方法:

代码语言:javascript
复制
- (void)testSendingRequests
 {
        MNRequest *request = [MNRequest requestWithType:@"AUselessType"
                                                    content:@"AUselessContent"
                                                   delegate:nil
                                                    timeOut:10
                                                   userInfo:nil];

            MNMessage * message = mockClass([MNMessage class]);
            [given([mockMsgCenter sendMessage:message]) willDo:^id(NSInvocation *invocation) {
                // Mock implementation goes here
        }
        NSNumber *identificationNumber = [center sendRequest:request];
        verify(mockMsgCenter);
        // some other code
  }

这是错误的屏幕:

EN

回答 1

Stack Overflow用户

发布于 2018-12-31 17:13:09

这就是问题的解决方案

代码语言:javascript
复制
MNMessage * message = mockClass([MNMessage class]);
    [given([mockMsgCenter sendMessage:message]) willDo:^id(NSInvocation *invocation) {
        // Mock implementation goes here
        NSArray *args = [invocation mkt_arguments];
        MNMessage * msg = args[0];
        MNPackagedRequest *pkgRequest = (MNPackagedRequest *)[args[0] content];
        BOOL c1 = [msg.type isEqualToString:MNRequestMessageType];
        BOOL c2 = [[pkgRequest type] isEqualToString:@"AUselessType"];
        BOOL c3 = [(NSString *)[pkgRequest content] isEqualToString:@"AUselessContent"];
        BOOL c4 = [[msg content] isEqual:pkgRequest];
        BOOL c5 = [msg guaranteedDelivery];
        BOOL c6 = ([msg ttl] == request.timeOut);
        return @(c1 && c2 && c3 && c4 && c5 && c6);
    }];
     NSNumber *identificationNumber = [center sendRequest:request];
     verify(mockMsgCenter);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53956887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档