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

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

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

Почему мы хотим писать тестовые примеры для нашего проекта?

  • Экономит время
  • Создавайте надежное программное обеспечение
  • Помогает с рефакторингом, совместной работой и профилированием.
  • Уверенность в том, что наше программное обеспечение работает

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

Создание вашего первого тестового примера с помощью Jest JS

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

Убедитесь, что у вас установлен узел.

Давайте настроим Jest, открыв терминал и выполнив следующую команду.

npm i jest --save-dev

. — флаг save -dev используется для установки jest в качестве зависимости разработки.

Добавьте новый скрипт в файл package.json в разделе скрипты ключ: пара значений; «тест»: «шутка»

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

Расширение .test сообщает jest, что оно содержит тестовые примеры, которые мы хотим запустить.

Теперь давайте создадим наш самый первый тестовый файл с именем math.test.js (да, это файл JavaScript).

Фреймворк Jest предлагает метод test(), который в основном запускает тест. Функция test() принимает два аргумента: имя теста и тест, который нужно запустить.

test('My first Test', () => {
}

Давайте сохраним файл и выполним следующую команду, чтобы запустить тестовый пример.

npm test

В выводе он действительно просматривает наш файл math.test.js, и хотя наша вновь созданная функция ничего не делает, она по-прежнему считается пройденным тестом.

Почему это? Итак, когда мы регистрируем тест, мы пишем функцию с двумя аргументами. Когда мы запускаем тест, он в основном запускает этот файл и проверяет, выполняются ли все функции в этом файле, если функция выдает ошибку, то она считает это неудачным тестовым случаем.

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

test('My failed test', () => {
     throw new Error('Failed to execute!')
})

Когда мы снова выполним команду, запустив команду npm test, мы получим следующий вывод

Всего у меня два теста, один пройден, а другой провален.

Когда мы запускаем math.test.js, все, что мы делаем, — это запускаем функции и проверяем, какая из них прошла успешно, а какая — нет.

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

Давайте создадим файл js с именем math.js

В этом файле напишите простую функцию для умножения двух чисел.

const multiplyNumber = (num1, num2) =>{
      const total = num1 * num2
return total
 }

Давайте экспортируем эту функцию в наш тестовый файл, включив строку экспорта в наш файл.

module.exports = {
       multiplyNumber
}

Теперь load позволяет функции в нашем math.test.js

const math = require('// Enter Destination of math.js file')

Давайте создадим тестовый пример для нашей вновь созданной функции. Первый аргумент принимает имя тестового примера, а второй аргумент вычисляет. Давайте вычислим, передав два числа и сообщив, чего ожидать при запуске этой функции. 10 x 3 = 30. Если это не вычисляется, мы выдаем ошибку.

test('Should get me the right result', () => {
const total = math.multiplyNumber(10,3)
        if(total!=30){
throw new Error('Total number should be 30! Got ' + total)
         }
})

Закомментируйте весь предыдущий код и запустите npm test.

Здорово! Наш тестовый пример пройден.

Что, если наша функцияmultiNumber() не работает? Допустим, в дело вступает новый разработчик и редактирует функцию, не понимая, что допустил ошибку. Давайте быстро испортим наш MultipleNumber(), чтобы посмотреть, что произойдет.

const multiplyNumber = (num1, num2) =>{
      const total = num1 * num2 - num1. //Subtracting num1 again
return total
 }

Давайте снова запустим набор тестов. Что ты видишь? Если вы испортили свой код, как указано выше, вам может быть предложено, что тестовый пример не пройден. И это действительно так. Предполагается, что возвращаемое значение равно 30, и мы получим 20 для вышеописанной запутанной функции.

Jest предоставляет нам другую функцию, похожую на test(), к которой мы можем получить доступ в наших тестовых примерах. Заменим строку проверки, равно ли значение 30 или нет встроенной функцией Jest.

test('Should get me the right result', () => {
const total = math.multiplyNumber(10,3)
expect(total).toBe(30) //Single line to check 
})

С помощью jest мы делегируем задачу проверки вывода, вызывая expect(), и при этом мы предоставляем ожидаемое значение. В нашем случае мы ожидаем общее количество, поэтому мы передаем его. Теперь библиотека Jest поставляется с десяток или около того методов. В нашем случае мы используем toBe(), где мы передаем значение, которое ожидаем получить.

Я надеюсь, вам понравится читать это, и чтобы увидеть больше таких статей, следите за мной в среде и заходите на мой веб-сайт Sharjeel Sidd, чтобы узнать о вещах, над которыми я работал.