Какой смысл проверять, был ли вызван фиктивный метод?

Ладно, это может быть опасный вопрос. Я некоторое время занимался модульным тестированием, но по какой-то причине я проснулся сегодня утром и задал себе этот вопрос.

Скажем, у меня есть интерфейс UserFactory, и у него есть метод CreateUser.

В какой-то момент мне нужно создать пользователя, верно? Поэтому я создаю тест, проверяющий, вызывался ли CreateUser для UserFactory в соответствующем месте.

Теперь модульные тесты хорошо связаны с реальным кодом -, и это нормально. Но, может быть, слишком много? Например, единственный способ нарушить тест — не вызывать вызов CreateUser. Мы не проверяем его реализацию и т. д., а просто проверяем вызов интерфейса. Но тот, кто удалит этот вызов, получит неудачный тест и в конечном итоге удалит оператор проверки из шага, чтобы проверить, был ли вызван CreateUser.

Я видел, как это происходило снова и снова.

Может ли кто-нибудь вернуть мне свет и объяснить, почему полезно проверять, были ли вызваны методы фиктивных объектов? Я понимаю, почему может быть полезно их настроить, скажем, CreateUser должен возвращать фиктивного пользователя для более поздней части кода, но в местах, где мы просто и только проверяем, были ли они вызваны, это та часть, которая меня достала.

Спасибо!

7
задан Karan 12 August 2012 в 18:10
поделиться