метод заглушки с помощью OCMockito - PullRequest
0 голосов
/ 28 декабря 2018

Привет! У меня возникла проблема при тестировании метода, который отправляет объектное сообщение при запуске, тест не пройден и выдает следующую ошибку:

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

Это мой метод тестирования:

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

это экран ошибки: enter image description here

1 Ответ

0 голосов
/ 31 декабря 2018

это решение проблемы

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