Ложные внутренние вызовы методов другого класса с использованием OCMockito Objective c - PullRequest
0 голосов
/ 19 марта 2020

Я использую OCMockito Framework. Я сталкиваюсь с проблемами насмешливых вызовов другого класса из класса, который я тестирую. Когда method2 вызывается из Class1, вызов не достигает mockCalls для возврата нужного объекта.

Код для модульного тестирования Class1:

- (void)test_success
{
    self.restService = mock([Class2 class]);
    [self mockCalls:self.restService withResult:someObject];
    Class1 *sut = [[Class1 alloc] initWith:self.restService];
    XCTestExpectation *expectation = [self expectationWithDescription:@"expectation"];
    [sut someMethod:@"abc" parameter2:@"123456" parameter3:@"abcd" success:^(someObject) {
        [expectation fulfill];
        XCTAssertNotNil(someObject, @"object was null");
    }       failure:^(NSError *error) {
        XCTFail(@"NSError not expected");
    }];

    [self waitForExpectationsWithTimeout:10 handler:^(NSError *error) {
        if (error != nil)
        {
            XCTFail(@"Expectation Failed with error: %@", error);
        }
    }];
}

- (void)mockCalls:(Class2 *)mock withResult:(SomeClass *)someObject
{
    [givenVoid([mock method2:anything()
                  parameter2:anything()
                  parameter3:anything()
                     success:anything()
                     failure:anything()]) willDo:^id(NSInvocation *invocation) {
        NSArray *args = [invocation mkt_arguments];
        void (^success)(someObject) = args[3];
        success(someObject);
        return nil;
    }];
}
...