2013-12-11 3 views
4

Как использовать OCMockito для захвата аргумента с помощью примитивных значений?OCMockito захватывает примитивные типы?

Возможно, MKTArgumentCaptor способен захватывать только типы объектов? Xcode говорит «Несовместимый указатель на целочисленное преобразование».

ответ

6

Для примитивных аргументов вы должны сделать небольшой танец. Скажем, мы издевались NSMutableArray и хотел проверить звонки

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 

Вместо

[verify(mockArray) replaceObjectAtIndex:[argument capture] withObject:anything()]; 

, который дает вам тип конфликта, мы просто фиктивное значение (0 будет делать отлично), но добавить OCMockito называют переопределить сличитель по данному индексу аргумента:

[[verify(mockArray) withMatcher:[argument capture] forArgument:0] 
    replaceObjectAtIndex:0 withObject:anything()]; 

индекс аргумент -withMatcher:forArgument: является 0 на основе для первого аргумента, так что это говорит, «для первый аргумент, игнорировать все, что было передано, и использовать этот матчи вместо этого ».

Существует также метод -withMatcher: который только делает это на первый аргумент, так что этот пример может быть упрощен до

[[verify(mockArray) withMatcher:[argument capture]] 
    replaceObjectAtIndex:0 withObject:anything()]; 
+0

[значения аргумента], а затем возвращает NSNumber. – huggie

+0

Это правильно. Затем вы берете этот NSNumber и спрашиваете его, что хотите. –

Смежные вопросы