Тестирование параметров отправки в Mock Protocol с помощью OCMockito

Добрый день, я использую OCHamcrest и OCMockito, чтобы начать свой путь, используя методологию TDD, они действительно классные инструменты, но есть одна вещь, которую, похоже, я не понимаю насчет протоколов и пытаюсь оценить параметр.

Рассматривая пример, который идет с кодом:

- (void)testVerifyWithMatcherForPrimitive
{
    NSMutableArray *mockArray = mock([NSMutableArray class]);

    [mockArray removeObjectAtIndex:2];

    [[verify(mockArray) withMatcher:greaterThan([NSNumber numberWithInt:1]) forArgument:0]
     removeObjectAtIndex:0];    // The 0 is a placeholder, replaced by the matcher
}

Это работает, как и ожидалось, но когда я пытаюсь повторить это с фиктивным протоколом, оно всегда проходит тесты, например:

- (void)testFirstParameter
{
    // given
    id<TestProtocol> mockElement = mockProtocol(@protocol(TestProtocol));

    // when
    id toProcess = nil;
    [mockElement process: toProcess];

    // then
    id firstArgumentMatcher = instanceOf([NSArray class]);
    [[verify(mockElement) withMatcher: firstArgumentMatcher forArgument: 0] process: toProcess];
}

В этом тесте я пытаюсь проверить, что аргумент является экземпляром класса NSArray, он не должен проходить. Не могли бы вы помочь мне обнаружить, что я делаю неправильно?

Большое спасибо,

Луис Алехандро

1 ответ

Решение

Я думаю ты хочешь

[[verify(mockElement) process:instanceOf([NSArray class])];

использование withMatcher:forArgument: только для примитивных аргументов.

Другие вопросы по тегам