Измешивание возвращаемого значения domaininStance.validate ()

StackOverflow https://stackoverflow.com/questions/4724107

Вопрос

Я пишу Спок ЕДИНЦИОННЫЙ Тест, который проверяет метод контроллера.

Действие контроллера под тестированием создает новый объект экземпляра домена и вызовы подтверждают его до его сохранения. Есть ли в любом случае издеваться над призывом к domaininstance.validate (), чтобы я мог заставить его вернуть все, что я хочу? Или мне придется скрыть это инстанцирацию и сохранение метода обслуживания для достижения этого?

Я делаю это таким образом, потому что в контексте модульного теста для контроллера ограничения доменного объекта не должны быть вовлечены. Я проверяю их в другом месте (в MyDomainclasstests, очевидно). Если бы я хотел принять во внимание, мой тест был бы интеграционным тестом.

Это было полезно?

Решение 2

Через некоторое время я пришел к выводу, что то, что я хотел, довольно сложно. Если вы в сценарии, где вы не имеют использовать mockDomain(), вы можете добавить метод Groovy MetaClass и его реализацию (вернуть True или False, в зависимости от того, что вы хотите)

если ты делать Нужно MockDomain (), потому что вам нужно издеваться над уже существующими экземплярами, которые вы вышли из опций, по крайней мере, на данный момент, потому что MockDomain () и возиться с методами MetaClass, которые фактически предоставляют издевательство, не будет смешиваться.

Другие советы

Если вы не поместили проверку в самом экземпляре домена, а скорее в службу, вы можете позволить своему контроллеру воспользоваться сервисом в его конструкторе (или, скорее, интерфейс службы). Пусть эта служба обрабатывает проверку.

Теперь для вашего контроллера, вы передадите в макет этого интерфейса (службу) контроллеру и настроили макет, чтобы вернуть все, что вы хотите.

Для .NET я могу порекомендовать MOQ (http://code.google.com/p/moq/)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top