Пошаговое руководство по использованию Jest для тестирования в приложениях Node.js.

Подобно тому, как моя внешняя разработка подтолкнула мою внутреннюю разработку к использованию JavaScript (Node.js), теперь это заставляет меня задуматься о Jest для большей части моего внутреннего тестирования.
Раньше мое решение для внутреннего тестирования Node.js включало фреймворк Mocha, Chai для утверждений, Sinon для издевательства и Instabul для освещения. В то же время Jest с его сильной поддержкой React стал моим решением для внешнего тестирования (предоставляет фреймворк, решение для утверждения, имитации и покрытия).
Тогда возникает очевидный вопрос; Как насчет Jest на сервере? .
примечание. Эта серия статей не является параллельным сравнением Jest с другими решениями. Это, скорее, пошаговое руководство по использованию Jest для тестирования в приложении Node.js.
Все примеры из этой серии доступны для скачивания. Это приложения Node.js (версия ≥ 8.9.3).
Настройка
Создайте новый проект Node.js и установите eslint-config-airbnb-base, и его одноранговые зависимости; в документации, пакет как зависимости разработки.
примечание: я использую ESLint и особенно строгую конфигурацию Airbnb, хотя это и не требуется для тестирования; сейчас трудно писать JavaScript без него. Также особенно полезно наличие поддержки ESlint в вашем редакторе, например, Atom.
Установите пакеты jest и eslint-plugin-jest в качестве зависимостей разработки.
Настройте ESLint с помощью .eslintrc.js:
start / .eslintrc.js
module.exports = {
extends: [
'airbnb-base',
'plugin:jest/recommended',
],
plugins: [
'import',
'jest',
],
env: {
node: true,
'jest/globals': true,
},
};
Чтобы упростить запуск ESLint и Jest, мы обновляем package.json:
start / package.json
"main": "index.js",
"scripts": {
"lint": "eslint src/**",
"test": "jest src",
"coverage": "jest --collectCoverageFrom=src/**.js --coverage src"
},
"author": "",
Начало работы
Теперь мы пишем наше первое приложение в папке src.
start / src / sum.js
module.exports = (a, b) => a + b;
start / src / index.js
/* eslint-disable no-console */
const sum = require('./sum');
console.log(sum(1, 2).toString());
На этом этапе мы можем запустить eslint, чтобы убедиться, что наш код передает его.
npm run lint
Теперь мы можем написать тест для sum.js.
start / src / sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
и запустите тест с помощью:
npm run test
примечание: npm test - это особый случай скрипта.
и запустите тест с покрытием:
npm run coverage

В результате, как и ожидалось, у нас 100% покрытие для sum.js, но 0% покрытие для index.js (мы не писали для него тест).
Дальнейшие действия
Мы продолжаем наше пошаговое руководство в Еще раз о тестировании Node.js: Часть 2, представляя более реальное приложение (приложение Express).