Я знаю, как я использую эти термины, но мне интересно, были ли принятые определения фальсификации, mocking и stubbing для модульные тесты? Как вы определяете их для своих тестов? Опишите ситуации, в которых вы можете использовать каждый.
Вот как я их использую:
Fake: класс, который реализует интерфейс, но содержит фиксированные данные и никакой логики. Просто возвращает "хорошие" или "плохие" данные в зависимости от реализации.
Mock: класс, который реализует интерфейс и позволяет динамически устанавливать значения для возврата/исключений для броска из определенных методов и предоставляет возможность проверить, были ли определенные методы вызваны/нет называется.
Stub. Как класс mock, за исключением того, что он не дает возможности проверить, что методы были вызваны/не вызваны.
Mocks и заглушки могут быть сгенерированы или сгенерированы с помощью насмешливой структуры. Поддельные классы создаются вручную. Я использую mocks прежде всего для проверки взаимодействия между моим классом и зависимыми классами. Я использую заглушки, когда я проверил взаимодействия и тестирую альтернативные пути через свой код. Я использую поддельные классы, прежде всего, для абстрагирования зависимостей данных или когда mocks/stub слишком утомительны для настройки каждый раз.