Что такое "заглушка"?

Итак, продолжая свое разрешение на новые годы, чтобы больше входить в TDD, теперь я начинаю больше работать с Rhino Mocks.

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

Что такое "заглушка"?

Ответ 1

Маркус Фаулер писал по этому вопросу. Из этой статьи:

Meszaros использует термин Test Double как общий термин для любого вида притворяемого объекта, используемого вместо реального объекта для целей тестирования. Название происходит от понятия Stunt Double в фильмах. (Одна из его целей состояла в том, чтобы избежать использования какого-либо имени, которое уже широко использовалось.) Затем Мезарос определил четыре отдельных вида двойных:

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

Чтобы выразить это словами: макеты объектов "ожидают" на них вызывают определенные методы и обычно вызывают потерю unit test, если их ожидания не выполняются. Объекты-заглушки предоставляют консервированные ответы (и могут быть автогенерированы вспомогательными библиотеками), но обычно не приводит к сбою unit test. Обычно они используются так, что объект, который вы тестируете, получает данные, необходимые для выполнения своей работы.

Ответ 2

A "заглушка" представляет собой реализацию интерфейса, который существует для предоставления данных/ответа какого-либо рода. Например:

  • a DataSet
  • список пользователей
  • Файл Xml

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

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

Заготовки отличаются от Mocks тем, что они используются для представления и тестирования состояния объекта, тогда как Mock проверяет его взаимодействие.

Ответ 3

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

Ответ 4

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

Ответ 5

Я недавно столкнулся с вопросом и понял, что это сравнение между заглушкой и драйвером действительно ясное и полезное:

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

+---------+-------------------------------+-------------------------------+
|         | Stub                          | Driver                        |
+---------+-------------------------------+-------------------------------+
| Type    | Dummy codes                   | Dummy codes                   |
+---------+-------------------------------+-------------------------------+
| Used in | Top Down Integration          | Bottom Up Integration         |
+---------+-------------------------------+-------------------------------+
| Purpose | To allow testing of the upper | To allow testing of the lower |
|         | levels of the code, when the  | levels of the code, when the  |
|         | lower levels of the code are  | upper levels of the code are  |
|         | not yet developed.            | not yet developed.            |
+---------+-------------------------------+-------------------------------+
| Example | A and B are components.       | A and B are components.       |
|         | A ---> B                      | A ---> B                      |
|         |                               |                               |
|         | A has been developed.         | A still needs to be developed.|
|         | B still needs to be developed.| B has been developed.         |
|         | Therefore, stub is used       | Therefore, driver is used     |
|         | in place of B to imitate it.  | in place of A to imitate it   |
|         |                               |                               |
|         | A ---> Stub                   | Driver ---> B                 |
+---------+-------------------------------+-------------------------------+

От разницы между заглушкой и водителем

Ответ 6

После некоторых исследований, основанных на файлах-заглушках, с которыми я столкнулся в течение своей жизни кодера, я бы сказал, что файл-заглушка - это просто файл, содержащий полную или частичную реализацию файла. Это помогает разработчикам начать кодирование.