Рубрики
Без рубрики

Как вы можете проверить свои приложения Node.js с ava.js

By Nitish Phanse Как вы можете проверить свои приложения Node.js с Ava.jswhy, вы хотели бы написать тестовые дела для ваших приложений, в любом случае? Ну, это вопрос, который ряд разработчиков пытаются увернуться, чисто потому, что это требует усилий и времени, и потому что ручное тестирование так

Автор оригинала: FreeCodeCamp Community Member.

Nitish Phanse.

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

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

В этот момент вы обычно говорите: «Хотелось бы написать несколько тестовых случаев для начала». Так что возьмите вдохновение из Facebook: они поделились довольно классной статьей здесь Объяснение того, как команда разработала реагирование 16 с тестированным развитием.

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

В этой статье я покрыл Как настроить и писать базовые тестовые чехлы с отчетами охвата для приложений Node.js Отказ Так что давайте прыгнем.

Привет ава

Ava это тестовый бегун JavaScript. Это использует природу async ввода/вывода узла и запускает параллельные тесты, тем самым значительно уменьшается время вашего теста.

Давайте начнем

В вашем рабочем каталоге создайте Package.json Файл и добавьте следующие пакеты:

yarn add ava babel-register

Создать Тесты папка. Это полезно, чтобы ваши тесты в одном месте. Вы можете сохранить тестовые модули/контроллеры там тоже.

Ваш обновленный Package.json теперь должен выглядеть так:

{  "name": "ava-test",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "start" : "node server.js",    "test": "node_modules/.bin/ava tests/**/*.test.js --verbose",    "test:watch": "node_modules/.bin/ava --verbose --watch"  },  "dependencies": {    "ava": "^0.23.0",    "babel-register": "^6.26.0"  },  "ava": {    "require": [      "babel-register"    ]  }}

Бабел-Регистр Переходные данные ES6 Code во время выполнения в случае, если некоторые машины работают на старой версии узла, которая не поддерживает ES6. Verbose Флаг даст нам какой-то аккуратный выход в зависимости от того, проходят ли наши тесты или проходят. Этот флаг довольно полезен при отладке ваших тестов, но если вы пишете сотни испытательных случаев, вы можете выключить его.

В вашем Тесты/index.test.js Вы можете добавить свой первый тестовый случай:

Удобная вещь о AVA состоит в том, что он позволяет управлять асинхронными тестами, через функции async ждут. Синтаксис также довольно прост. Метод плана позволяет нам явно упомянуть количество утверждений, которые мы хотели бы иметь за тест.

Бег Тест пряжи От вас консоль дает вам следующий выход:

В случае неудачи один из наших тестов, мы получим:

Это красота Verbose режим. Он дает вам чистый стек ошибки и ни один из нездоровой трассировки стека. В случае, если вы запустите ошибку выполнения, вы увидите, что некоторые красивые выделения синтаксиса тоже.

Вы можете действительно использовать AVA API и использовать его мощный инструмент Assertion для написания гибких тестовых случаев.

Настройка сервера узла

До сих пор мы говорили только о базовой настройке для написания тестов – и давайте быть Фрэнком, это довольно быстро. Таким образом, в этом разделе я объясню, как простым сервером узла может быть выключен, и его конечные точки протестированы с AVA.

yarn add express body-parser 

В вашем рабочем каталоге создайте app.js и добавить следующий фрагмент:

Причина, по которой я экспортировал модуль приложения, так что его можно использовать с помощью сервера MOCK API, который AVA должен будет запускать свои тесты.

Сделайте новый файл server.js и импортируйте модуль приложения, чтобы начать сервер.

Запуск NPM Start должен запускать свой сервер и навигации на http://localhost/stature конечная точка должна дать вам ответ 200ok.

Отлично, поэтому наш сервер работает.

Быстрый взгляд кода показывает, что мы создали 3 конечных точек: конечную точку состояния, конечную точку приветствия и конечную точку регистрации. Существует некоторая проверка на конечной точке регистров, которая бросает 400 (плохой запрос) в случае отсутствия параметров теста. Вышеуказанный метод проверки довольно наивно наивно, но оно служит нашей цели тестирования конечных точек – поэтому я собираюсь придерживаться этого.

Давайте напишем еще несколько тестов вокруг конечной точки. Я буду использовать Супертест модуль. Это очень похоже на SuperaGent : Он использует те же API, и имеет аналогичный синтаксис. Итак, Win-Win.

Мы импортировали ранее экспортированные приложение Модуль и передал его в суперстест. Supertest создает прокси-сервер, который затем ударит все URL-контактные URL-адреса, упомянутые в тесте. Вы можете использовать Deepal Метод для проверки всего объекта или это Метод вручную тестировать каждое поле.

Запуск теста пряжи даст следующее:

Отлично. Мы написали четыре теста, и все они проходят, как и ожидалось. Но как насчет охвата кода?

Привет nyc.

Для создания этих прекрасных отчетов охвата мы будем использовать NYC который является интерфейсом командной строки ISTANBUL.JS. Это очень легко использовать и имеет много настраиваемых вариантов. Ради простоты мы будем использовать очень простую конфигурацию.

yarn add nyc --save

NYC Команда красиво охватывает команду тесты и создадим папку покрытия (это должно быть в вашем gitignore) в вашем рабочем каталоге.

Обновите свой Package.json как показано ниже:

{  "name": "ava-test",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "test": "node_modules/.bin/ava tests/**/*.test.js --verbose",    "test:watch": "node_modules/.bin/ava --verbose --watch",    "cover": "node_modules/.bin/nyc yarn test",  },  ... other dependencies   "nyc": {    "reporter": [      "lcov",      "text",      "html"    ]  }}

Типы репортера, которые вы хотите, можно настроить в разделе NYC вашего Package.json файл.

Давайте запустим крышку пряжи:

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

Ясно, что мы пропустили место. Давайте добавим наш последний тестовый случай в Тесты/index.tests.js Файл, который будет покрывать весь app.js файл.

test('Create a new user', async t => {  let username = 'some-hase'  const password = 'some-hase'  const response = await request(app)    .post('/register')    .send({username, password});
t.is(response.status, 200);    t.is(response.body.message, `new user created`);});

И сейчас….

Presto.

"check-coverage": "node_modules/.bin/nyc check-coverage --lines 100 --functions 100 --branches 100 --statements 100"

Эта команда может быть запущена как часть ваших систем сборки строки трубопроводов TRAVIS/GitLab.

Заключение

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

PS: Надеюсь, вам нравится статью, поправьте меня, если я не так никуда не так. Всегда приветствуем обсуждение.