В этом контексте слово «заглушка» используется вместо «макет», но для ясности и точности автор должен был использовать «макет», потому что «макет» является своего рода заглушкой, но для тестирования. Чтобы избежать путаницы, нам нужно определить, что такое заглушка.
В общем контексте заглушка - это часть программы (обычно функция или объект), которая включает в себя сложность вызова другой программы (обычно расположенной на другом компьютере, ВМ или процессе), но не всегда она также может быть локальным объектом). Поскольку фактическая вызываемая программа обычно не находится в одном и том же пространстве памяти, для ее вызова требуется много операций, таких как адресация, выполнение фактического удаленного вызова, сортировка / сериализация данных / аргументов, которые должны быть переданы (и то же самое с потенциальным результатом), может даже иметь дело с аутентификацией / безопасностью и так далее. Обратите внимание, что в некоторых случаях заглушки также называются прокси (например, динамические прокси в Java).
Макет - это очень специфический и ограничительный тип заглушки, потому что макет является заменой другой функции или объекта для тестирования. На практике мы часто используем макеты в качестве локальных программ (функций или объектов) для замены удаленной программы в тестовой среде. В любом случае макет может имитировать реальное поведение замененной программы в ограниченном контексте.
Наиболее известные типы заглушек, очевидно, предназначены для распределенного программирования, когда требуется вызывать удаленные процедуры ( RPC ) или удаленные объекты ( RMI , CORBA ). Большинство распределенных программных сред / библиотек автоматизируют создание заглушек, поэтому вам не нужно писать их вручную. Заглушки могут быть сгенерированы из определения интерфейса, написанного, например, с помощью IDL (но вы также можете использовать любой язык для определения интерфейсов).
Обычно в RPC, RMI, CORBA и т. Д. Различают заглушки на стороне клиента , которые в основном занимаются маршалингом / сериализацией аргументов и выполнением удаленного вызова, и сервер боковые заглушки , которые в основном заботятся о демаршалировании / десериализации аргументов и фактически выполняют удаленную функцию / метод. Очевидно, клиентские заглушки расположены на стороне клиента, в то время как несколько заглушек (часто называемых скелетами) расположены на стороне сервера.
Написание хороших эффективных и общих заглушек становится довольно сложной задачей при работе со ссылками на объекты. Большинство каркасов распределенных объектов, таких как RMI и CORBA, имеют дело с ссылками на распределенные объекты, но это то, чего большинство программистов избегают, например, в средах REST. Как правило, в средах REST программисты JavaScript создают простые функции-заглушки для инкапсуляции вызовов AJAX (сериализация объектов поддерживается JSON.parse
и JSON.stringify
). Проект Swagger Codegen предоставляет обширную поддержку для автоматического создания заглушек REST на разных языках.