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

Когда дело доходит до тестирования микросервисов, важно использовать эффективные стратегии проверки их поведения и взаимодействия. Два часто используемых метода изоляции зависимостей во время тестирования — это макетирование и заглушка. Хотя оба подхода предполагают создание тестовых двойников, они служат разным целям. В этой статье мы рассмотрим ключевые различия между макетированием и заглушкой в ​​тестах микросервисов и предоставим примеры кода для иллюстрации каждого метода.

  1. Издевательство.
    Издевательство предполагает создание объектов, имитирующих поведение реальных компонентов. Моки используются для проверки взаимодействия между тестируемой системой и ее зависимостями. Они позволяют вам устанавливать ожидания в отношении вызовов методов и возвращать предопределенные значения. Вот пример использования платформы Mockito на Java:
// Creating a mock object
UserService userServiceMock = Mockito.mock(UserService.class);
// Setting expectations on method calls
Mockito.when(userServiceMock.getUserById(1)).thenReturn(new User("John"));
// Invoking the method under test
String userName = myService.getUserName(1);
// Verifying the interaction
Mockito.verify(userServiceMock).getUserById(1);
  1. Заглушка.
    Заглушка включает в себя создание объектов, которые предоставляют заранее определенные ответы на вызовы методов. Заглушки используются для замены реальных зависимостей и имитации определенного поведения. Обычно они используются, когда вы хотите сосредоточиться на тестировании определенной функциональности без проверки взаимодействия. Вот пример использования библиотеки Sinon.js в Node.js:
// Creating a stub object
const databaseStub = sinon.stub(database, 'query');
// Configuring the stub response
databaseStub.withArgs('SELECT * FROM users').resolves([{ id: 1, name: 'John' }]);
// Invoking the method under test
const result = userService.getUsers();
// Asserting the expected result
assert.deepStrictEqual(result, [{ id: 1, name: 'John' }]);
// Restoring the stub
databaseStub.restore();
  1. Другие методы тестирования.
    Помимо макетирования и заглушки, при тестировании микросервисов можно использовать и другие методы, в зависимости от ваших конкретных требований:
  • Двойники тестов: это общие термины, которые охватывают как макеты, так и заглушки. Это объекты, используемые в качестве замены реальных зависимостей в тестах.
  • Внедрение зависимостей: этот метод включает в себя внедрение макетов или заглушек в тестируемую систему, что позволяет вам контролировать ее поведение во время тестирования.
  • Виртуализация служб. Она предполагает создание виртуализированных версий внешних служб для эмуляции их поведения и обеспечения надежного тестирования, даже если фактические службы недоступны.

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