Найти в Дзене
Chris Roylance

Разработка CMS на TypeScript. Часть 2. Автотесты для системы инициализации.

Всем доброго времени суток, в этой части мы рассмотрим и реализуем автотесты для ранее начатой системы инициализации. В предыдущей части было реализовано автоматическое создание необходимх нам директорий. Для корректной и простой реализации автотестов, были произведены небольшие изменения. В классе InitFolderAndFile, инициализация проверки и создания директорий осуществлялась в конструторе класса. Всю эту логику мы с вами перенесем в новую функцию init. Ранее запуск процесса инициализации у нас был в классе InitServer в его конструкторе. Сейчас мы изменим конструктор в InitServer, что бы у нас производился запуск процесса инициализации директорий. На этом внесенные изменения заканчиваются. Переходим к автотестам. Автотесты позволяют нам проверять работу каждой части нашего приложения со всеми вариантами работы системы. Для автотестов автоматического создания директорий мы создадим два автотеста. Первый будет проверять корректность создания абсолютно всех директорий, проверять их наличи
Оглавление

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

Внесенные изменения

Для корректной и простой реализации автотестов, были произведены небольшие изменения. В классе InitFolderAndFile, инициализация проверки и создания директорий осуществлялась в конструторе класса. Всю эту логику мы с вами перенесем в новую функцию init.

Ранее запуск процесса инициализации у нас был в классе InitServer в его конструкторе. Сейчас мы изменим конструктор в InitServer, что бы у нас производился запуск процесса инициализации директорий.

-2

На этом внесенные изменения заканчиваются. Переходим к автотестам.

Автотесты

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

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

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

Автотесты можно объядинять в блоки тестов, для этого мы используем функцию describe из пакета "bun:test". Данная функция принимает первым параметрам название этого блока автотестов, вторым же параметром является callback-функция, в которой уже и находятся наши тесты.

-3

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

-4

Второй автотест у нас немного посложнее и его работу можно разделить на две части, в первой части мы создаем директорию data до общей инициализации, а потом производим все те же операции, что и в первом автотесте.

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

Для запуска автотестов воспользуемся командой

bun test

Данная команда позволяет нам запустить все файлы в пределах проекта (директории запуска), которые имеют формат <название файла>.test.ts. Таких расширений много, но в пределах проекта будет использоваться именно такой формат.

-6

Запустив автотест, мы видим информацию о самих тестах, т.к. файл с тестами, их название, время выполнения каждого из них, а так же статистику выполнения. В пределах наших тестов у нас используется 18 expect(), с помощью который и производиться проверка корректности значений.

В следующей статье мы подготовим систему логирования процесса инициализации на основе nedb.