Тестирование параметров отправки в 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:
только для примитивных аргументов.