Что значит «заглушить» в программировании?

63

Например, что это означает в этой цитате?

Интеграция с внешним API почти гарантирована в любом современном веб-приложении. Чтобы эффективно протестировать такую ​​интеграцию, вам нужно заглушить. Хороший заглушка должен быть легко создан и постоянно обновляться с актуальными текущими ответами API. В этом сообщении хорошо очертите стратегию тестирования с помощью stubs для внешнего API.

Теги:
stub

5 ответов

65
Лучший ответ

Штук является контролируемой заменой Существующей зависимости (или соавтором) в системе. Используя заглушку, вы можете протестировать свой код без непосредственно касаясь зависимости.

Внешняя зависимость - существующая зависимость:
Это объект в вашей системе, что ваш код под тестированием взаимодействует и над которыми вы не контролируете. (Общие примерами являются файловые системы, потоки, память, время и т.д.)

Например, ниже код:

public void Analyze(string filename)
    {
        if(filename.Length<8)
        {
            try
            {
                errorService.LogError("long file entered named:" + filename);
            }
            catch (Exception e)
            {
                mailService.SendEMail("[email protected]", "ErrorOnWebService", "someerror");
            }
        }
    }

Вы хотите протестировать метод mailService.SendEMail(), но для этого вам нужно смоделировать исключение в вашем тестовом методе, поэтому вам просто нужно создать Fake Stub errorService, чтобы имитировать желаемый результат, тогда ваш тестовый код сможет протестировать метод mailService.SendEMail(). Как вы видите, вам нужно смоделировать результат, который является результатом другой Dependency, которая представляет собой объект класса ErrorService (существующий объект Dependency).

  • 8
    Английский? Что такое существующая зависимость?
  • 14
    @ Jwan622 С точки зрения непрофессионалов: все, что использует код. Это может помочь понять, если вы перечитываете и заменяете «зависимость» на «класс» или «функцию» или что-то еще (зависит от вашего фона). Иногда использование существующего класса / функции не является жизнеспособным вариантом, и вам нужна заглушка (например, в автоматическом модульном тестировании для функций, которые зависят от среды, такой как текущая дата и время системы).
66

A stub, в этом контексте означает макетную реализацию.

То есть простая поддельная реализация, которая соответствует интерфейсу и должна использоваться для тестирования.

  • 3
    Более подробная информация представлена в известной статье Мартина Фаулера « Mocks Aren't Stubs» : «Но часто я вижу, что фиктивные объекты описаны плохо. В частности, я вижу, что их часто путают с заглушками - обычным помощником в средах тестирования».
30

Условия Layman, это фиктивные данные (или поддельные данные, тестовые данные... и т.д.), которые вы можете использовать для тестирования или разработки вашего кода до тех пор, пока вы (или другая сторона) не будете готовы представлять/получать реальные данные. Это программист "Lorem Ipsum".

База данных сотрудников не готова? Составьте простой с Джейн Доу, Джон Доу и т.д. API не готов? Создайте поддельный, создав статический файл .json, содержащий поддельные данные.

  • 0
    Спасибо за пример :)
  • 0
    это было просто :) спасибо
3

У вас также очень хорошие рамки тестирования для создания такого заглушки. Одним из моих предпочтительных является Mockito Существует также EasyMock и другие... Но Mockito здорово, вы должны прочитать его - очень элегантный и мощный пакет

1

Stub - это определение функции, которое имеет правильное имя функции, правильное количество параметров и создает фиктивный результат правильного типа.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню