Что такое модульное тестирование?

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

Краткое введение в Jest

Jest — это фреймворк, предназначенный для тестирования кодовой базы JavaScript. Он позволяет писать тестовые примеры для проектов с использованием Babel, TypeScript, Node, React, Angular, Vue и других.

В этой статье мы будем использовать JavaScript (ES6) с NPM для простоты и удобства.

Добавление Jest в ваш проект

Чтобы добавить модуль jest в свой проект, просто запустите

npm i --save-dev jest
npm i -g jest

После этого запустите

jest --init

Инструмент задаст вам несколько вопросов, ответьте на них в соответствии с вашими требованиями.

Это создаст файл конфигурации с именем jest.config.js

Создание примера функции

Конечно, нам потребуется что-то для проведения наших тестов. Ниже приведен пример функции для проверки, является ли число четным или нечетным.

const evenOdd = (number) => {
   if (number % 2 == 0) {
      return 'even'
   }
   return 'odd'
}

Я написал это в файле с именем app.js

Создание тестового файла для этой функции

Давайте создадим новую папку с именем __tests__ и добавим в нее новый файл evenOdd.test.js.

Прежде чем писать тестовые примеры, мы должны увидеть основной синтаксис и сопоставители, необходимые для тестовых случаев.

  1. describe: у нас есть «описание», которое описывает или собирает тестовые наборы для набора тестов.
  2. test: указывает на тестовый случай.
  3. it: псевдоним для тестирования.
  4. expect: функция, которая получает значение для проверки и связывает другие сопоставители.
  5. Другие сопоставители (toBe, toBeTruthy, toHaveProperty и т.д.). Чтобы увидеть другие сопоставители, используйте эту ссылку.

Написание первого тестового примера

Теперь давайте откроем файл evenOdd.test.js и начнем писать наши тестовые случаи.

const evenOdd = require("../app")
describe('Testing the Even-Odd Function',()=>{
   test('The function should exist',()=>{
      expect(evenOdd).toBeTruthy()
   })
})

Обратите внимание на код выше; тестовый пример проверяет, существует ли функция или нет.

Чтобы запустить это, используйте use jest __tests__/evenOdd.test.js и обратите внимание на вывод ниже:

Как мы видим, результат тестового примера — ПРОШЕЛ.

Мы можем добавить несколько других тестовых случаев, как показано в коде ниже:

const evenOdd = require("../app")
describe('Testing the Even-Odd Function',()=>{
   test('The function should exist',()=>{
      expect(evenOdd).toBeTruthy()
   })
   test('Should return even on passing an even number',()=>{
      expect(evenOdd(8)).toBe('even')
   })
   test('Should return odd on passing an odd number',()=>{
      expect(evenOdd(7)).toBe('odd')
   })
})

Теперь давайте попробуем тестовый пример, который терпит неудачу.

const evenOdd = require("../app")
describe('Testing the Even-Odd Function',()=>{
   test('The function should exist',()=>{
      expect(evenOdd).toBeTruthy()
   })
test('Should return even on passing an even number',()=>{
      expect(evenOdd(8)).toBe('even')
   })
test('Should return odd on passing an odd number',()=>{
      expect(evenOdd(7)).toBe('odd')
   })
test('Should return invalid number error if a non-digit input is passed',()=>{
      expect(evenOdd('neelesh')).toBe('invalid number')
  })
})

Это было все для этой статьи. Это было написано для новичков, которые не были в модульном тестировании. Jest — отличный модуль, и он часто используется.

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