Простой TDD в NodeJS за 5 шагов

Вам нужно начать TDD в NodeJS прямо сейчас! Некоторые спрашивают, почему? Я спрашиваю, почему бы и нет?

Я начал писать TDD в Laravel — в настоящее время самый известный веб-фреймворк PHP, с простыми инструкциями о том, как начать путь разработки PHP-программиста через тестирование. Теперь я хотел бы поделиться тем, как мы можем использовать тот же шаблон в NodeJ.

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

В этом уроке я буду использовать AdonisJS framework, который очень похож на Laravel по структуре кода. После установки запустите npm install, чтобы установить необходимые библиотеки.

Настройте тестовую среду

Шаг 1

Вам необходимо настроить среду TEST для AdonisJS, чтобы он работал — Настройте тест здесь. После настройки вы можете запустить adonis test для запуска теста по умолчанию.

info: serving app on http://127.0.0.1:4000
Example
    ✓ make sure 2 + 2 is 4 (2ms)
PASSED
total       : 1
passed      : 1
time        : 6ms

Создайте свой первый тестовый пример

Шаг 2

Давайте создадим свой собственный тест. В example.spec.js просто переименуйте имя теста с make sure 2 + 2 is 4 на it can make a user.

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

Если мы запустим adonis test и мы получим:

info: serving app on http://127.0.0.1:4000
User unit test
    ✖ it can make a user (8ms)
ERRORS
1. it can make a user
  expected 'johndoe' to equal undefined
  "johndoe" => undefined
FAILED
total       : 1
failed      : 1
time        : 13ms

Это именно то, чего мы хотим, FAIL. В каждом TDD вы хотите, чтобы ваш первоначальный тест не прошел, поскольку вы не выполнили никаких реализаций. Если вы запускаете тестовую команду и она проходит с первого раза, вы делаете это НЕПРАВИЛЬНО.

Отладка того, что происходит

Шаг 3

В чем может быть ошибка? Если мы console.log() константу user отобразим:

Нам нужно установить sqlite3, потому что по умолчанию AdonisJS сохраняет данные в sqlite, когда DB_CONNECTION в ENV не устанавливается. Проверьте конфигурацию database.js ниже.

Теперь запустите npm install sqlite3 --save . После установки и сохранения снова запустите тестовую команду: adonis test

Дальнейшая отладка того, что происходит

Шаг 4

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

Это ОТЛИЧНО хорошо! Если вы получили эту ошибку, вы на правильном пути!

Если вы посмотрите на каталог database/migrations, у нас уже есть файл миграции пользователей, но он по-прежнему выдает ошибку. Почему? Это связано с тем, что программа запуска тестов не запускает наши файлы миграции. Для этого нам нужно изменить наш vowfile.js

Мы должны раскомментировать ace , вызов запуска миграции и сброс миграции. Как только вы это сделаете, вы можете снова запустить команду adonis test.

Надеясь, что есть свет в конце туннеля

Шаг 5

Как видите, сейчас ПРОХОДИТ! Погладьте себя по спине, приятель, вы СДЕЛАЛИ это!

Прощальные слова. NodeJs — это асинхронный язык программирования, и он настолько быстр, что выдает ОШИБКУ перед тем, как ЗАПУСТИТЬ ваш фактический код. :)

Следующим учебным пособием будет шаблон проектирования REPOSITORY в NodeJS. Так что продолжайте читать!

Удачного программирования!

PS.

План здесь будет таким: тестирование, создание репозиториев, запуск автоматизированного теста, создание образа докера, развертывание приложения. :)