简体   繁体   English

OCMockito进行存根方法

[英]stubbing method with OCMockito

Hi I had a problem when testing a method that send a object message when I Run, the test failed and show me this error: 嗨,我在测试运行时发送对象消息的方法时遇到问题,测试失败并显示此错误:

failed: caught "NSInvalidArgumentException", "*** -[NSProxy doesNotRecognizeSelector:sendMessage:] called!"

this is my test method : 这是我的测试方法:

- (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
  }

this is a screen for the error: 这是错误的屏幕: 在此处输入图片说明

this the solution of the problem 这是问题的解决

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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM