Цель дразнить

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

var useless_comment = "Can we destroy our enemies?"
if (phasers on full) return Qapla'
6
задан Ronnie Overby 16 June 2009 в 15:30
поделиться

7 ответов

Цель имитации - изолировать класс тестируется из других классов.

Это полезно, когда класс:

  • подключается к внешнему ресурсу (файловая система, БД, сеть ...)
  • требует больших затрат на установку или еще не доступен (разрабатывается оборудование)
  • замедляется выполнение модульных тестов
  • имеет недетерминированное поведение
  • имеет (или есть) пользовательский интерфейс

Это также упрощает проверку на наличие ошибок, поскольку вы создаете свой фиктивный объект так, чтобы он возвращал и ошибка, генерировать исключение ...

Макет может записывать, как он был вызван (порядок вызовов функций, параметры), и это может быть проверено тестом. РЕДАКТИРОВАТЬ: Например: Метод, который вы тестируете, отправляет сообщение, например IPC. Метод фиктивного объекта может записывать, сколько раз он был вызван, параметр, который он получил (т.е. сообщение, которое нужно отправить). Затем тест может опросить фиктивный объект и подтвердить количество отправленных сообщений, содержание сообщения ... Точно так же фиктивный объект может записывать методы, которые вызываются в строку журнала, и тест может извлекать эту строку и утверждать на ней.

Не злоупотребляйте фиктивными объектами : проверяйте поведение, а не реализацию, или модульные тесты будут слишком тесно связаны с кодом и хрупкими (ломаются при рефакторинге).

Мок можно закодировать вручную или сгенерировать с помощью макетной структуры .

16
ответ дан 8 December 2019 в 02:27
поделиться

Его разработан, чтобы подшутить над отдельным экземпляром из групповой коллекции. Часто используется на нерегулярных сборах предметов.

4
ответ дан 8 December 2019 в 02:27
поделиться

While mocking is usually understood as allowing for isolation of a class under test this isn't the main point of a mock (stubs are better for this). Instead we need to look at what happens when an object is told to do something which is one of 3 things..

  1. Direct Output - result of a method call
  2. Internal Changes - changes to the class during a method call
  3. Indirect Output - code under test calls a different class

State based testing is all about #1 and #2. #1 via looking at the result that the method gives you. #2 by accessing the objects internal state.

This leaves us with #3 for which there are two avenues we can take. The first is a by using a Mock and the second by using a Test Spy. The main difference is that on a Mock you create the expectations before executing the code under test and then have the mock verify them after, whereas with a Test Spy you execute the code under test and then ask the Test Spy if certain actions occurred.

So to sum all that up.. when you think about testing what a class does if you need to test indirect output (aka a call to another class) that is where Mocking comes into play.

4
ответ дан 8 December 2019 в 02:27
поделиться

Mocking позволяет изолировать тестируемый класс от его зависимостей. Как правило, вы создаете макет для каждой зависимости для тестируемого класса и настраиваете макет для возврата ожидаемых значений. Затем вы предоставляете макет тестируемому классу вместо реальной копии класса, от которого зависит ваш тестируемый класс. Затем вы можете использовать среду фиксации, чтобы проверить, были ли сделаны ожидаемые вызовы фиктивным объектам, чтобы убедиться, что ваш тестируемый класс работает правильно.

7
ответ дан 8 December 2019 в 02:27
поделиться

Я остановился на службе USC WebGIS из-за ее красивого интерфейса веб-службы и простоты регистрации.

Геокоды не подходят в качестве уникального ключа для почтовых адресов, правда, по ряду причин. Например, геокодирование не может различать разные единицы в комплексе кондоминиумов или многоквартирных домах.

Я решил использовать проанализированный адрес из результата геокодирования и наложил уникальные ограничения на номер улицы, название улицы, объект, город, штат и zip. Это не идеально, но подходит для того, что я делаю.

Я тоже новичок в насмешках, но я попробую это сделать. По моему опыту, имитация имеет два основных преимущества:

  • Вы можете начать работать с объектами до того, как напишете реализацию. Вы можете определить интерфейс и использовать имитацию для работы с интерфейсом в модульных тестах или даже в коде.
  • Mocking позволяет изолировать тестируемый объект в модульных тестах. С помощью фиктивных объектов вы можете полностью управлять любыми объектами, с которыми взаимодействует тестируемый объект, тем самым удаляя внешние зависимости из теста.
3
ответ дан 8 December 2019 в 02:27
поделиться

«Мок» - это сильно перегруженный термин в кругах тестирования и TDD. См. Статью Мартина Фаулера Mocks Aren't Stubs . «Правильный» макет знает, какие значения он должен получить, и сообщает вам, когда он не получает того, что было задумано; это позволяет вам выполнять тестирование взаимодействия вместо тестирования состояния - вы проверяете, что тестируемый класс передает правильные сообщения своим сотрудникам в правильной последовательности. Тестирование взаимодействия сильно отличается от обычного государственного тестирования и может быть трудным для понимания. Помните, что тестирование взаимодействия - это суть имитаций, может облегчить их понимание.

3
ответ дан 8 December 2019 в 02:27
поделиться

Еще один ответ: Поведенческая проверка: myMock.WasCalled (MyMethod);

0
ответ дан 8 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: