Представляем Suite Wrappers

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

Сократить лишнюю информацию и шаблон можно разными способами. Один из них - использовать тестовые драйверы, которые содержат детали реализации КАК запускать тестируемый модуль и оставляют ЧЕМ делать тест самому. Другой метод - использовать тестовые наборы, чтобы переложить использование внешних ресурсов на набор с понятными API.

Драйверы, тестовые наборы и другие методы очень полезны и очень рекомендуются, однако они могут легко иметь неприятные последствия с огромным количеством шаблонов. Например, предположим, что вы хотите запустить базу данных (конечно, в памяти!). Вам нужно начать с подключения и закрыть его в конце, возможно, запустив код в блоках before и after - код, который не имеет прямого отношения к тестам и предназначен для его поддержки.

Тест становится утомительным и менее читаемым. подумайте о других способах использования, которые требуют гораздо большего количества шаблонов и кода запуска. Более того, чтобы создать другой костюм, который использует тот же шаблонный код, вы собираетесь скопировать / вставить тот же код, который вызывает дублирование кода и затрудняет обслуживание системы.

Что такое обертки костюмов?

Оболочки пакета могут помочь нам удалить шаблон, который не имеет прямого отношения к коду, а скорее относится к тестовым комплектам / другим используемым инструментам. Обертки костюмов удерживают шаблон подготовки и запускают его без проблем.

Реализация оберток костюмов тесно связана с тестовыми фреймворками, такими как mocha, jest и jasmine, и предоставляет чистые API для тестирования. Для этого мы собираемся расширить набор операторами before и after, которые выполняются неявно.

Обертка костюма состоит из 3 частей:

  • Test Framework Wrappers - предоставляет возможность обернуть функциональность тестовой среды конкретной реализацией.
  • Оболочки тестовых наборов - используйте оболочку тестовой среды и расширьте их с помощью определенных функций тестовых наборов.
  • Тестовый костюм - настоящий тест без лишнего шаблонного кода.

Оболочки Test Framework

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

В приведенном выше примере мы экспортируем API, который получает элемент conf, который будет содержать реализацию, которую мы хотим добавить к костюму. Учитывая beforeDesc, мы можем запустить его до describe блоков. То же самое касается afterDesc, beforeIt и afterIt.

Обертки тестовых наборов

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

Использование тестового костюма

В этом тестовом костюме используются обертки тестового набора, и они предоставляют тестам контекст и объект тестового набора, просто используя mySuit.describe и mySuit.it. Тест получает дополнительную функциональность без лишнего кода и делает тест более компактным.

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

Заявление об ограничении ответственности

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

Чтобы разумно использовать инструменты, я рекомендую писать тесты без них, а затем искать инструмент, который действительно улучшит код. Это то, что мы сделали, когда столкнулись с запутанным тестом - все другие инструменты, которые мы пробовали, не справились с задачей, а тест был более чистым, и, наконец, мы придумали оболочки для пакетов.

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

Вы можете найти все примеры здесь:
https://gist.github.com/alonn24/e18fe297fcfd8ad5ca47ce020944d2d9

Спасибо за чтение!
Есть мнение по этому поводу? пожалуйста, прокомментируйте!
Я хотел бы услышать об этом.