Jest
Професійний урок про Jest / TypeScript
Жодне тестове рішення не є ідеальним. Тим не менш, jеst є чудовим варіантом модульного тестування, який забезпечує чудову підтримку TypeScript.
Примітка: ми припускаємо, що ви починаєте з простого налаштування вузла package.json. Також усі файли TypeScript мають бути в папці
src, що завжди рекомендується (навіть без Jest) для чистого налаштування проекту.
Step 1: Install
Встановіть наступне за допомогою npm:
npm i jest @types/jest ts-jest typescript -DПояснення:
Встановити фреймворк
jest(jest)Встановіть типи для
jest(@types/jest)Встановіть препроцесор TypeScript для jest (
ts-jest), який дозволяє jest транспілювати TypeScript на льоту та має вбудовану підтримку source-map.Встановіть компілятор TypeScript ('typescript'), який є передумовою для 'ts-jest'.
Збережіть усе це у своїх залежностях розробника (тестування майже завжди в dev-dependency npm)
Step 2: Configure Jest
Додайте наступний файл jest.config.js до кореня вашого проекту:
module.exports = {
"roots": [
"<rootDir>/src"
],
"testMatch": [
"**/__tests__/**/*.+(ts|tsx|js)",
"**/?(*.)+(spec|test).+(ts|tsx|js)"
],
"transform": {
"^.+\\.(ts|tsx)$": "ts-jest"
},
}(Якщо ваш файл package.json містить "type": "module", через що Node припускає, що модулі мають формат es6, ви можете конвертувати наведене вище у формат es6, замінивши верхній рядок на export default { .)
Пояснення:
Ми завжди рекомендуємо зберігати всі файли TypeScript у папці
srcвашого проекту. Ми вказуємо це за допомогою параметраroots.Конфігурація
testMatch— це глобальний відповідник шаблонів для виявлення файлів .test / .spec у форматі ts / tsx / js.Конфігурація
transformпросто повідомляєjestвикористовуватиts-jestдля файлів ts / tsx.
Step 3: Run tests
Запустіть npx jest з кореня вашого проекту, і jest виконає будь-які ваші тести.
Optional: Add script target for npm scripts
додайте package.json:
Це дозволяє запускати тести за допомогою простого
npm t.І навіть у режимі перегляду з
npm t -- --watch.
Optional: Run jest in watch mode
npx jest --watch
Example
для
foo.ts:простий
foo.test.ts:
Примітки:
Jest надає функцію глобального тестування.
Jest поставляється попередньо зібраним із твердженнями у формі глобального
expect.
Example async
Jest має вбудовану підтримку async/await.
Example enzyme
Enzyme дозволяє тестувати реагують компоненти з підтримкою dom. Існує три етапи налаштування:
Встановіть enzyme, типи для enzyme, a better snapshot serializer for enzyme, enzyme-adapter-react для вашої версії react
npm i enzyme @types/enzyme enzyme-to-json enzyme-adapter-react-16 -DДодайте
"snapshotSerializers"і"setupTestFrameworkScriptFile"до вашогоjest.config.js:створіть
src/setupEnzyme.tsфайл.
Ось приклад компонента react і тесту:
checkboxWithLabel.tsx:checkboxWithLabel.test.tsx:
Reasons why we like jest
Вбудована бібліотека тверджень.
Чудова підтримка TypeScript.
Дуже надійний спостерігач за тестами.
Тестування Snapshot.
Вбудовані звіти про покриття.
Вбудована підтримка async/await.
Last updated