01:08
Урок 40: Тестирование JavaScript

Курс по программированию на JavaScript

Урок 40: Тестирование JavaScript

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

Основы тестирования

Существует несколько типов тестирования, но наиболее часто используемые в разработке веб-приложений — это модульное (unit) и интеграционное (integration) тестирование.

  • Модульное тестирование (Unit Testing): Тестирование отдельных модулей или компонентов кода. Каждый модуль тестируется изолированно от других модулей.
  • Интеграционное тестирование (Integration Testing): Тестирование взаимодействия между несколькими модулями или компонентами кода. Цель — убедиться, что модули работают вместе корректно.

Использование библиотек для тестирования

Существует множество библиотек для тестирования JavaScript-кода. В этом уроке мы рассмотрим две популярные библиотеки: Jest и Mocha.

Jest

Jest — это мощная библиотека для тестирования, разработанная Facebook. Она проста в использовании и имеет множество полезных функций, таких как мокирование и измерение покрытия кода.

Установка Jest

Установите Jest, выполнив следующую команду:

npm install --save-dev jest
+ jest@27.0.6
added 250 packages from 221 contributors and audited 250 packages in 8.567s

Пример теста с Jest

Создайте файл sum.js с функцией сложения:

function sum(a, b) {
 return a + b;
}
module.exports = sum;
// Функция сложения

Создайте файл sum.test.js с тестами для функции sum:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
 expect(sum(1, 2)).toBe(3);
});

test('adds 2 + 2 to equal 4', () => {
 expect(sum(2, 2)).toBe(4);
});
// Тесты для функции сложения

Запустите Jest, выполнив следующую команду:

npx jest
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
✓ adds 2 + 2 to equal 4 (2ms)

Mocha

Mocha — это гибкий фреймворк для тестирования JavaScript. Он предоставляет набор инструментов для написания тестов и хорошо интегрируется с другими библиотеками, такими как Chai для утверждений.

Установка Mocha и Chai

Установите Mocha и Chai, выполнив следующие команды:

npm install --save-dev mocha chai
+ mocha@8.4.0
+ chai@4.3.4
added 30 packages from 20 contributors and audited 40 packages in 5.123s

Пример теста с Mocha и Chai

Создайте файл sum.js с функцией сложения (если его еще нет):

function sum(a, b) {
 return a + b;
}
module.exports = sum;
// Функция сложения

Создайте файл test/sum.test.js с тестами для функции sum:

const { expect } = require('chai');
const sum = require('../sum');

describe('sum function', () => {
 it('should add 1 + 2 to equal 3', () => {
 expect(sum(1, 2)).to.equal(3);
 });

 it('should add 2 + 2 to equal 4', () => {
 expect(sum(2, 2)).to.equal(4);
 });
});
// Тесты для функции сложения с использованием Mocha и Chai

Запустите Mocha, выполнив следующую команду:

npx mocha
sum function
 ✓ should add 1 + 2 to equal 3
 ✓ should add 2 + 2 to equal 4

2 passing (10ms)

Упражнения

Упражнение 1: Написание тестов с Jest

Напишите функцию multiply, которая умножает два числа. Создайте файл multiply.js с этой функцией. Затем создайте файл multiply.test.js и напишите тесты для функции multiply, используя Jest.

Решение:

// multiply.js
function multiply(a, b) {
 return a * b;
}
module.exports = multiply;

// multiply.test.js
const multiply = require('./multiply');

test('multiplies 2 * 3 to equal 6', () => {
 expect(multiply(2, 3)).toBe(6);
});

test('multiplies 4 * 5 to equal 20', () => {
 expect(multiply(4, 5)).toBe(20);
});
PASS ./multiply.test.js
✓ multiplies 2 * 3 to equal 6 (3ms)
✓ multiplies 4 * 5 to equal 20 (1ms)

Объяснение: Мы написали функцию multiply и создали тесты для нее с использованием Jest.

Упражнение 2: Написание тестов с Mocha и Chai

Напишите функцию divide, которая делит одно число на другое. Создайте файл divide.js с этой функцией. Затем создайте файл test/divide.test.js и напишите тесты для функции divide, используя Mocha и Chai.

Решение:

// divide.js
function divide(a, b) {
 if (b === 0) throw new Error('Cannot divide by zero');
 return a / b;
}
module.exports = divide;

// test/divide.test.js
const { expect } = require('chai');
const divide = require('../divide');

describe('divide function', () => {
 it('should divide 6 by 3 to equal 2', () => {
 expect(divide(6, 3)).to.equal(2);
 });

 it('should throw an error when dividing by zero', () => {
 expect(() => divide(6, 0)).to.throw('Cannot divide by zero');
 });
});
divide function
 ✓ should divide 6 by 3 to equal 2
 ✓ should throw an error when dividing by zero

2 passing (15ms)

Объяснение: Мы написали функцию divide и создали тесты для нее с использованием Mocha и Chai.

Категория: JavaScript | Просмотров: 41 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: