JavaScript:
Письмо тестів

Як це зробити:

Нативний підхід (використовуючи Jest)

Jest — це популярний фреймворк для тестування, який надає зручний API для написання юніт-тестів на JavaScript. Він вимагає мінімальної конфігурації і має такі функції, як мок-функції, таймери та тестування по знімках.

  1. Інсталяція:
npm install --save-dev jest
  1. Написання простого тесту:

Створіть файл sum.test.js:

const sum = require('./sum'); // Припускаємо, що ця функція просто додає два числа

test('додає 1 + 2, щоб отримати 3', () => {
  expect(sum(1, 2)).toBe(3);
});
  1. Запуск вашого тесту:
npx jest

Приклад виводу:

PASS  ./sum.test.js
✓ додає 1 + 2, щоб отримати 3 (5ms)

Тестування асинхронного коду

Jest полегшує тестування промісів та синтаксису async/await:

// asyncSum.js
async function asyncSum(a, b) {
  return Promise.resolve(a + b);
}

// asyncSum.test.js
test('асинхронне додавання працює', async () => {
  await expect(asyncSum(1, 2)).resolves.toBe(3);
});

Використання сторонніх бібліотек (Mocha та Chai)

Mocha — це ще один популярний фреймворк для тестування, який часто використовують разом із бібліотекою перевірок Chai для більш виразних тестів.

  1. Інсталяція:
npm install --save-dev mocha chai
  1. Написання тесту за допомогою Mocha та Chai:

Створіть calculate.test.js:

const chai = require('chai');
const expect = chai.expect;

const calculate = require('./calculate'); // Простий модуль обчислення

describe('Calculate', function() {
  it('повинен сумувати два значення', function() {
    expect(calculate.sum(5, 2)).to.equal(7);
  });
});
  1. Запуск ваших тестів з Mocha:

Додайте скрипт у ваш package.json:

"scripts": {
  "test": "mocha"
}

Потім виконайте:

npm test

Приклад виводу:

  Calculate
    ✓ повинен сумувати два значення


  1 passing (8ms)

Ці приклади ілюструють базове написання тестів та їх виконання в JavaScript. Адаптація фреймворку для тестування, як-от Jest або Mocha з Chai, може забезпечити міцну основу для ретельного тестування додатків, допомагаючи забезпечити правильну роботу вашого коду при оновленнях та рефакторингах.