Почему мы должны тестировать?

Это продолжение статьи о прототипно-ориентированном программировании в JavaScript, в которой я подробно рассказываю об объектах и ​​прототипном наследовании в JavaScript. Вы можете ознакомиться с ней ЗДЕСЬ.

Моя цель в этой статье — представить базовое тестирование и то, как вы можете легко протестировать свой код/проект, преимущества, которые дает тестирование вашего кода, и поделиться с вами своим опытом.

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

const addUp = (a,b) => a + b;

Легко, верно? да — так что вы заканчиваете функцию и запускаете свое приложение Happy!!!

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

Что тестируется

Тестирование — это написание кода для проверки правильности вашего кода/приложения, качества и производительности приложения в целом.

Виды тестирования

  • Модульное тестирование — тестирование модуля приложения без его внешних зависимостей, таких как файлы, базы данных и т. д. их проще всего написать и быстро выполнить.
  • Интеграционное тестирование — тестирование комбинаций модулей и их совместной работы.
  • E2E — Сквозное тестирование. Тестирование приложения в браузере или на устройстве для анализа производительности (включая пользовательский интерфейс) всего приложения.

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

Мы сосредоточимся в основном на модульном тестировании, которое связано с тестированием части нашего приложения изолированно, без вмешательства в какую-либо внешнюю библиотеку, то есть мы тестируем функциональность этого часть, чтобы мы были уверены в его работе и были уверены, что он делает то, что должен делать.

Что такое шутка?

Поэтому я упоминал о Jest ранее, если верить их официальному сайту.

Jest — это восхитительная платформа для тестирования JavaScript, ориентированная на простоту.

Jest — это проект с открытым исходным кодом, поддерживаемый Facebook. Jest позволяет быстрее и проще писать идиоматические тесты JavaScript, включив в него все необходимое. Jest поставляется со встроенными способностями к насмешкам и утверждениям. Кроме того, Jest выполняет ваши тесты параллельно, обеспечивая более плавный и быстрый запуск теста.

У нас есть другие фреймворки, такие как Mocha, Jasmine, но я лично предпочитаю Jest, потому что в него встроены все его функции. давайте продолжим, установив Jest.

Во-первых, на вашем компьютере должны быть установлены npm и node, вы можете перейти по этой ссылке ЗДЕСЬ, чтобы установить их, или введите эту команду, чтобы проверить, установлены ли они уже в вашей системе node -vи npm -vэто проверит, установлены ли они уже, и сообщит вам версию, которая у вас есть. установлен.

затем создайте папку, которую вы хотите использовать для этого руководства, перейдите к папке в своем терминале и введите эту команду, npm init чтобы настроить папку и npm install --save-dev jestчтобы установить Jest как просто зависимость разработчика в проекте и откройте имя файла package.json, которое находится в вашем корневом каталоге, перейдите к тесту по сценарию и измените его на это

"scripts": {
    "test": "jest"
}

Чтобы запустить тестовый файл сейчас, все, что вам нужно сделать, это ввести эту команду в свой терминал npm test, это попытается запустить весь ваш тестовый файл, но он еще не создан, поэтому вы получите сообщение об ошибке.

Двигаемся вперед, чтобы не создавать демонстрационный файл для тестирования. Создайте новый файл в каталоге вашего проекта и назовите его как угодно, я назову свой logic.js, куда мы будем добавлять наш обычный код JavaScript, который мы собираемся протестировать позже.

Итак, давайте добавим немного логики в наш файл logic.js.

У нас есть две функции: logic.js sum принимает массив целых чисел, суммирует их и возвращает однообщее значение и doubleNumber принимает массив целых чисел и возвращает массив каждого удвоенного целого числа.

Чтобы протестировать эти функции, мы должны создать текстовый файл: «ПРИМЕЧАНИЕ: все файлы с расширением someFileName.test.jsилиsomeFileName.spec.js являются допустимыми тестовыми файлами в Jest. ” Итак, давайте назовем наш тестовый файл logic.test.js и добавим в него несколько тестовых случаев.

Мы написали наш код в logic.js и экспортировали функцию с деструктуризацией объекта в ES6 и потребовали ее в тестовом файле, который мы создали logic.test.js, и добавили тестовые примеры для каждой функции…

Чтобы запустить наш тест, мы можем запустить тест для одного файла с этой командой npm test logic.test.js или npm testдля всех тестовых файлов, которые у нас есть в каталоге проекта, и результат теста будет выглядеть примерно так.

Ключевое слово и синтаксис

И module.export, и requireявляются чисто JavaScript, "используемыми для экспорта файла и фактического использования экспортированного файла в другом файле", а не Jest

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

it используется для определения того, что на самом деле делает тест. Это то же самое, что и при использовании test.

Сопоставитель – это метод, позволяющий проверять значения.

Наиболее часто используемые сопоставители, сравнивающие значение результата expect() со значением, переданным в качестве аргумента:

  • toBe сравнивает строгое равенство, используя ===
  • toEqual сравнивает значения двух переменных. Если это объект или массив, он проверяет равенство всех свойств или элементов.
  • toBeNull истинно при передаче нулевого значения
  • toBeDefined истинно при передаче определенного значения (в отличие от приведенного выше)
  • toBeUndefined истинно при передаче неопределенного значения
  • toBeCloseTo используется для сравнения значений с плавающей запятой, что позволяет избежать ошибок округления.
  • toBeTruthy true, если значение считается истинным (например, if)
  • toBeFalsy true, если значение считается ложным (как это делает if)

с помощью Jest Spy мы можем сымитировать поведение функции и получить представление о том, сколько раз функция была вызвана, какое значение было возвращено и сколько аргументов у функции. был вызван с.

Проверьте их документацию для получения дополнительной информации.

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

Скажем, мы хотим переписать код с помощью метода сокращения, доступного в JavaScript, например так:

Несмотря на то, что мы полностью переписали наш код и превратили его в однострочный лямбда-код, мы можем просто снова запустить наш тест с npm test, чтобы убедиться, что все работает должным образом. .

Вывод

Если вы очень хорошо следуете этому руководству, вы должны были увидеть, как легко настроить Jest для вашего проекта и насколько надежным Тестирование вашего кода делает все приложение в целом. Тестирование — один из лучших инструментов, который можно добавить в свой набор инструментов любого инженера-программиста.

Я надеюсь, что вы многое узнали из этой статьи, и вам следует прочитать мою книгу «Прототип-ориентированное программирование на JavaScript», в которой я объясняю, создавая раздел комментариев на веб-сайте, а файлы проекта и тесты доступны на Github. Не стесняйтесь раскошелиться и возиться с ним.

Если вы считаете, что это полезно, пожалуйста, жмите кнопку хлопка как можно чаще.

МИР