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

В этой статье будут показаны примеры использования JavaScript;

Просто интересуетесь исходным кодом? Вы можете найти его здесь: https://github.com/mw999/use-database-transactions

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

Мой идеальный рабочий процесс тестирования был бы.

  • Перенести базу данных (при необходимости можно добавить данные).
  • Начать транзакцию.
  • Войдите в тест - создавайте строки, утверждайте результаты, делайте наш код непробиваемым.
  • Зафиксируйте транзакцию и откатите ее.
  • Переходите к следующему тесту.

Мы будем тестировать модель пиццы, которая состоит из одного столбца базы данных, его имя. Первым делом мы создадим пиццу. В качестве ORM мы будем использовать objection.js, очень похожий на Eloquent в Laravel. Единственное обязательное свойство модели - это имя таблицы. Затем мы создадим миграцию с помощью knex, определив схему для нашей базы данных MYSQL.

Далее наш тест. Мы хотим убедиться, что модель пиццы построена правильно, что позволяет нам вставить новую запись в таблицу базы данных. Мы также хотим откатывать базу данных после каждого теста, используя нашу еще не созданную функцию useDatabaseTransactions(), которая очень похожа на use DatabaseTransactions; в Laravel.

Откат транзакций осуществляется через objection.js. Мы определяем наш тестовый экземпляр knex, инициализируем objection.js с нашей тестовой базой данных, а затем запускаем транзакцию базы данных. Мы храним ссылку на эту транзакцию, откатывая ее после каждого теста. Простой!

Использование этой техники позволяет нам сосредоточиться на тестировании, не беспокоясь о том, что база данных находится в не тестируемом состоянии. Когда тест не проходит, теперь мы знаем, что он будет ограничиваться только этим одним тестом.

Получайте удовольствие от тестирования вашего кода!

Полезное чтение