Можно ли проверить поведение внутри класса с помощью OCMock?

Учитывая этот простой класс

@implementation ExampleClass

- (void)doStuff
{
  [self doOtherStuff];
}

- (void)doOtherStuff
{
  // something happens here
}

@end

Можно ли проверить поведение этого класса, которое один из его собственных методов вызывает другой? например, в приведенном выше примере я могу использовать OCMock для проверки вызова doOtherStuff? Я пробовал следующее:

id mock = OCMClassMock([ExampleClass class]);
[mock doStuff];
OCMVerify([mock doOtherStuff]);

но на самом деле он вообще не вызывает вызов doStuff из-за того, что это макет класса. Возможно ли это только при частичной имитации - и если да, то какой альтернативный дизайн класса ExampleClass не требует частичной имитации? Терпите меня - новичок в юнит-тестировании и издевательствах здесь:)

1 ответ

Решение

Это то, что частичные насмешки для. Создать экземпляр ExampleClass, а затем создайте частичный макет для этого экземпляра. Используя этот частичный макет, вы теперь можете проверить и / или заглушить методы в этом экземпляре, например, убедиться, что doOtherStuff называется.

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