«Jest — это среда тестирования JavaScript, предназначенная для проверки правильности любой кодовой базы JavaScript». — Основная команда Jest
Jest — это простой в использовании набор для тестирования, который предоставляет разработчикам мощные функции, которые сэкономят ваше время (и головную боль) при отладке кода. В этой статье мы узнаем основы важности тестирования, с чего начать, а также рассмотрим некоторые примеры кода из реальной жизни.
Важность тестирования
Тестирование — важный этап в процессе разработки. Хорошо написанные тесты позволят вам выявлять ошибки на ранних стадиях конвейера перед развертыванием в рабочей среде.
Например, представьте, что компания выпускает новую версию своего приложения без тщательного тестирования.
Клиенты начинают сообщать о проблемах с приложением, в результате чего компании приходится возвращаться к этапу разработки для устранения проблем, что приводит к потере дохода и удару по их репутации.
С другой стороны, если бы компания внедрила ранний и частый подход к тестированию и обработке ошибок, они могли бы обнаружить эти проблемы до того, как повлиять на своих пользователей.
Типы тестирования
Тестирование бывает самых разных вкусов!
Не для всех проектов требуется полный спектр тестов, но внедрение некоторых основ — это простой способ создать эффективный рабочий процесс.
Вот список наиболее распространенных типов тестирования:
- Модульное тестирование. Обеспечивает правильную работу отдельных модулей или компонентов программного приложения по отдельности.
- Интеграционное тестирование. проверяет, как различные части приложения работают вместе, и тестирует взаимодействие между ними.
- Тестирование системы. Оценивается общая производительность всей системы и проверяется ее соответствие требованиям.
- Приемочное тестирование: проверяет, соответствует ли приложение требованиям и ожиданиям пользователя.
- Регрессионное тестирование: гарантирует, что новые изменения или дополнения не нарушают ранее работавший код.
- Тестирование производительности. Проверяет работу приложения при различных нагрузках и условиях, оценивает скорость, масштабируемость и стабильность.
- Тестирование безопасности. Проверяет безопасность приложения от атак и обеспечивает безопасность данных пользователей.
- Сквозное тестирование. Оценивает весь пользовательский поток приложения, проверяя, как различные компоненты работают вместе.
Начало работы с Jest
Чтобы начать работу с Jest, вам нужно добавить его в свой проект с помощью npm.
npm install — save-dev jest
После его установки мы можем написать наш первый модульный тест.
Давайте начнем с создания файла javascript с именем «example.js», а затем добавим этот код (не забудьте «module.exports = sum» внизу):
const sum = (a, b) => { if (a && b) { return a + b; } else { return 'invalid numbers'; } }; module.exports = sum
В Jest тесты определяются в файлах с расширением .test.js.
Давайте создадим файл с именем «example.test.js» в том же каталоге, что и наш файл example.js — туда мы добавим наши условия тестирования.
Добавьте следующий код в example.test.js:
const sum = require('./example'); test('should return the sum of a + b', () => { expect(sum(2, 2)).toBe(4); });
Сначала мы импортировали модуль example.js с помощью require, затем мы использовали функцию Jest «test», чтобы добавить простой тест с помощью метода «expect», на который ссылается Jest. как «сопоставитель».
Совет для профессионалов. Вы можете использовать любую строку в качестве первого аргумента тестовой функции. Лучше всего четко указать результат, используя фразу вроде «следует сделать XYZ».
Этот тест проверяет, возвращает ли функция sum()
ожидаемую сумму двух чисел. Он передает два аргумента функции sum()
(2 и 2) и использует метод expect()
(называемый утверждением), чтобы проверить, равен ли результат 4 с помощью сопоставителя toBe()
.
Чтобы запустить тест, добавьте этот скрипт в файл package.json:
{ "scripts": { "test": "jest" } }
Откройте терминал (убедитесь, что вы находитесь в том же каталоге, что и ваши тестовые файлы), затем введите npm test в командной строке.
Jest автоматически найдет и запустит любые тестовые файлы в вашем проекте.
$npm test
Поздравляю! Вы прошли свой первый тест!
Теперь самое интересное… давайте сделаем это НЕУДАЧНЫМ.
Всегда важно проверить условие отказа, чтобы убедиться, что вы получаете ожидаемый результат.
Измените числа вашей функции суммирования на то, что, как вы знаете, потерпит неудачу, например:
test('should return the sum of a + b', () => { expect(sum(2, 8)).toBe(4); });
Запустите свой тест еще раз, и вы увидите, что на этот раз он не проходит:
Результаты неудавшегося теста предоставляют подробную информацию о том, что пошло не так, и предложения о том, где вы можете посмотреть в своем коде, чтобы исправить это.
Давайте попробуем еще пару тестов.
Затем добавьте следующий код в файл example.test.js:
test('should return a message that says invalid numbers', () => { expect(sum(2)).toBe('invalid numbers'); });
Этот тест проверяет, правильно ли функция sum()
обрабатывает неверный ввод. Он передает только один аргумент функции sum()
(2), что должно привести к ошибке, поскольку sum()
требует двух аргументов.
Затем он использует функцию expect()
, чтобы утверждать, что результат равен строке «недопустимые числа», используя сопоставитель toBe()
.
Давайте запустим этот тест и посмотрим, работает ли он:
Отличная работа!
Два теста позади, один впереди.
Для окончательного теста давайте проверим более сложный тип данных:
Добавьте в тестовый файл следующий код:
test('should match object with passed in object', () => { // assertion const data = { favoriteGameCharacter: 'Link', favoriteGameTitle: 'Breath of the Wild' }; expect(data).toEqual({ favoriteGameCharacter: 'Link', favoriteGameTitle: 'Breath of the Wild' }); });
На этот раз мы проверяем, соответствует ли объект ожидаемому объекту.
Мы создали объект data
с двумя свойствами favoriteGameCharacter
и favoriteGameTitle
, а затем использовали функцию expect()
, чтобы утверждать, что объект data
равен ожидаемому объекту с теми же свойствами и значениями, используя сопоставитель toEqual()
.
Проведите тест в последний раз...
Мы это сделали, все тесты пройдены, и мы можем смело отправлять наш код на проверку.
Краткое содержание
В этом сообщении блога мы рассмотрели основы тестирования, подробно рассмотрели, как использовать Jest с вашим кодом JavaScript, и создали пример кода для написания и запуска ваших первых тестов. Мы также обсудили некоторые наиболее часто используемые ключевые слова для тестирования, которые помогут вам начать писать эффективные тесты для своих проектов.
Теперь у вас должна быть прочная основа для использования Jest в ваших собственных приложениях при написании надежных тестов, которые сэкономят вам время, деньги и нервы! Изучение основ тестирования избавило бы меня от бесчисленных головных болей во время буткемпа, и я надеюсь, что эта статья поможет вам избежать этой ошибки.
Источники
https://en.wikipedia.org/wiki/Jest_(фреймворк)
Использование сопоставителей · Jest
Jest использует «сопоставители, чтобы вы могли тестировать значения различными способами. В этом документе будут представлены некоторые часто используемые…jestjs.io»
https://www.testim.io/blog/unit-testing-best-practices/
Ресурсы
https://github.com/jest-community/awesome-jest