2012-06-19 3 views
6

Я пытаюсь использовать OCMock для тестирования своего приложения. Но я смущен, где мы должны использовать ожидание и где использовать заглушку? Может ли кто-нибудь помочь?В чем разница в методах OCMock и stub?

ответ

13

Основное отличие заключается в следующем: вы expect вещей, которые должны случиться, и stub вещей, которые могли бы случиться.

Существует два способа обмана ошибок: либо вызывается непредвиденный/нераскрытый метод, либо ожидаемый метод не вызывается.

  1. Неожиданные invocations. Когда макет-объект получает сообщение, которое не было ни зашнуровано, ни ожидалось, оно немедленно выдает исключение, и ваш тест не выполняется.
  2. Ожидаемые invocations. Когда вы вызываете verify на ваш макет (как правило, в конце вашего теста), он проверяет, действительно ли были вызваны все методы, которые вы ожидали. Если таковые не были, ваш тест не сработает.

Есть несколько типов издевательств, которые меняют это поведение: красивые издевательства и частичные издевательства. Приятные издевательства не позволяют вам заглушить методы - в основном они позволяют совершать неожиданные вызовы. Частичные издевательства - это способ перехвата сообщений, отправленных на реальные объекты. Любые сообщения, которые вы ожидаете или накладываете на частичный макет, будут отправлены макету. Все другие сообщения отправляются на фактический объект. Как для приятных издевательств, так и для частичных издевок вы не получите ошибку теста на неожиданных invocations (правило № 1 выше).