В чем разница между издевательствами и окурками (JMock) - PullRequest
1 голос
/ 23 апреля 2011

В чем разница между макетами и заглушками в jMock?Я могу создать как с JMock?как я могу создать с ним заглушки и какая ситуация наиболее подходит для этого, я считаю, что использование заглушек - это когда мне нужно подготовить какое-то состояние для теста.

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 апреля 2011

В Википедии есть статья , касающаяся ложных объектов , но терминология не объясняется так хорошо, как могла бы быть.Мы привыкли делать это различие (которое, конечно, может быть предметом обсуждения):

Макеты и заглушки имитируют объект, необходимый для тестирования компонента.

Слово "макет"используется, когда вы хотите утверждать, что имеет место определенный тип взаимодействия между тестируемым компонентом и проверяемым объектом.Вот почему фиктивные фреймворки (такие как EasyMock) предоставляют методы, чтобы утверждать, что все ожидаемые вызовы действительно были выполнены.НапримерВы хотите увидеть , что ваша служба фактически вызывает (поддельное) DAO.Поэтому этот вызов является частью ваших условий / утверждений теста.

Однако слово «заглушка» используется, когда вы просто пытаетесь предоставить реализацию, которая помогает тестировать ваш компонент.Какое взаимодействие происходит, не имеет значения, вы просто хотите, чтобы заглушка заполнила пробелы, чтобы вы могли протестировать свой компонент.Ваше внимание сосредоточено на проверенных компонентах и ​​на том, что они делают.

Так что это всего лишь два слова для одной и той же вещи, в зависимости от того, чего вы пытаетесь достичь с ее помощью.

1 голос
/ 23 апреля 2011

Mocha - это традиционная библиотека для насмешек, очень похожая на шаблон JMock.Stubba - это отдельная часть Mocha, которая позволяет высмеивать и заглушать методы в реальных (не фиктивных) классах.Он работает, перемещая интересующий метод в одну сторону, добавляя новую заглушенную версию метода, которая делегирует традиционный фиктивный объект.Вы можете использовать этот фиктивный объект для установки заглушенных возвращаемых значений или установки ожиданий методов, которые будут вызваны.После завершения теста заглушенная версия метода удаляется и заменяется оригинальной.

для более подробной информации, например,

http://jamesmead.org/blog/2006-09-11-the-difference-between-mocks-and-stubs

0 голосов
/ 24 января 2012

Мы обычно делаем различие между запросами и действиями. Запросы не изменяют состояние мира за пределами объекта-насмешки - мы можем вызвать его один или пять раз. Они как предварительные условия, если вы выполнили Проектирование по контракту.

Действия изменяют внешний мир (например, вычитают значение), и мы указываем имитацию для них. Имеет значение, сколько раз мы называем макет, потому что результаты будут другими. Это как постусловия.

Stub Queries, Mock Actions.

...