JavaRush /Курсы /Модуль 2: Fullstack /Настройка тестирования TypeScript проектов

Настройка тестирования TypeScript проектов

Модуль 2: Fullstack
9 уровень , 1 лекция
Открыта

2.1 Инструменты для тестирования TypeScript

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

Инструменты для тестирования TypeScript

Для тестирования TypeScript проектов существует множество инструментов, каждый из которых имеет свои особенности и преимущества. Основные инструменты включают:

  • Jest
  • Mocha
  • Karma
  • Ava
  • Cypress

2.2 Jest

Jest — это популярный фреймворк для тестирования JavaScript, разработанный Facebook. Jest идеально подходит для тестирования React-приложений, но также поддерживает тестирование любых JavaScript и TypeScript проектов.

Установка и настройка Jest

1. Установите Jest и необходимые зависимости:

Terminal
    
      npm install --save-dev jest ts-jest @types/jest
    
  

2. Создайте файл конфигурации Jest jest.config.js:

JavaScript
    
      module.exports = {
        preset: 'ts-jest',
        testEnvironment: 'node',
        testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)'],
      };
    
  

3. Добавьте скрипт для запуска тестов в package.json:

JSON
    
      "scripts": {
        "test": "jest"
      }
    
  

4. Напишите простой тест в src/__tests__/example.test.ts:

TypeScript
    
      function sum(a: number, b: number): number {
        return a + b;
      }

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

Запустите тесты командой:

Terminal
    
      npm test
    
  

2.3 Mocha

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

Установка и настройка Mocha

1. Установите Mocha, Chai и необходимые типы:

Terminal
    
      npm install --save-dev mocha chai ts-node @types/mocha @types/chai
    
  

2. Добавьте скрипт для запуска тестов в package.json:

JSON
    
      "scripts": {
        "test": "mocha -r ts-node/register 'src/**/*.test.ts'"
      }
    
  

3. Напишите простой тест в src/example.test.ts:

TypeScript
    
      import { expect } from 'chai';

      function sum(a: number, b: number): number {
        return a + b;
      }

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

Запустите тесты командой:

Terminal
    
      npm test
    
  

2.4 Karma

Karma — это тестовый раннер, разработанный AngularJS командой. Karma позволяет запускать тесты в реальных браузерах и идеально подходит для тестирования фронтенд-приложений.

Установка и настройка Karma

1. Установите Karma и необходимые плагины:

Terminal
    
      npm install --save-dev karma karma-chrome-launcher karma-jasmine karma-typescript jasmine @types/jasmine
    
  

2. Создайте файл конфигурации Karma karma.conf.js:

JavaScript
    
      module.exports = function (config) {
        config.set({
          frameworks: ['jasmine', 'karma-typescript'],
          files: [
            { pattern: 'src/**/*.ts' },
          ],
          preprocessors: {
            '**/*.ts': 'karma-typescript',
          },
          reporters: ['progress', 'karma-typescript'],
          browsers: ['Chrome'],
          singleRun: true,
        });
      };
    
  

3. Добавьте скрипт для запуска тестов в package.json:

JSON
    
      "scripts": {
        "test": "karma start"
      }
    
  

4. Напишите простой тест в src/example.test.ts:

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

Запустите тесты командой:

Terminal
    
      npm test
    
  

2.5 Ava

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

Установка и настройка Ava

1. Установите Ava и необходимые типы:

Terminal
    
      npm install --save-dev ava typescript @types/node
    
  

2. Создайте файл конфигурации Ava ava.config.js:

JavaScript
    
      export default {
        extensions: ['ts'],
        require: ['ts-node/register'],
        files: ['src/**/*.test.ts']
      };
    
  

3. Добавьте скрипт для запуска тестов в package.json:

JSON
    
      "scripts": {
        "test": "ava"
      }
    
  

4. Напишите простой тест в src/example.test.ts:

TypeScript
    
      import test from 'ava';

      function sum(a: number, b: number): number {
        return a + b;
      }

      test('sum', (t) => {
        t.is(sum(1, 2), 3);
      });
    
  

Запустите тесты командой:

Terminal
    
      npm test
    
  

2.6 Cypress

Cypress — это мощный инструмент для тестирования энд-то-энд (end-to-end), который позволяет тестировать ваше приложение в браузере, симулируя поведение пользователя.

Установка и настройка Cypress

1. Установите Cypress:

Terminal
    
      npm install --save-dev cypress
    
  

2. Добавьте скрипт для запуска тестов в package.json:

JSON
    
      "scripts": {
        "test": "cypress open"
      }
    
  

3. Запустите Cypress:

Terminal
    
      npm test
    
  

4. Создайте тест в cypress/integration/example.spec.ts:

TypeScript
    
      describe('My First Test', () => {
        it('Visits the Kitchen Sink', () => {
          cy.visit('https://example.cypress.io');
          cy.contains('type').click();
          cy.url().should('include', '/commands/actions');
          cy.get('.action-email')
            .type('fake@email.com')
            .should('have.value', 'fake@email.com');
        });
      });
    
  

Cypress предоставляет мощные возможности для автоматизированного тестирования пользовательского интерфейса.

3
Задача
Модуль 2: Fullstack, 9 уровень, 1 лекция
Недоступна
Настройка и запуск Jest
Настройка и запуск Jest
3
Задача
Модуль 2: Fullstack, 9 уровень, 1 лекция
Недоступна
Настройка Mocha и Chai
Настройка Mocha и Chai
3
Задача
Модуль 2: Fullstack, 9 уровень, 1 лекция
Недоступна
Настройка Karma
Настройка Karma
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Максим Уровень 50
21 мая 2025
При любой задаче на Jest - есть проблемы с тестами. Задачи могу и проходить, но запустить тесты не получается из-за того, что в tsconfig "module": "commonjs", который не работает с import и export. Мне помогло - добавить transform: { '^.+\\.tsx?$': 'ts-jest', } в jest.config.js и перегенерация конфига (npx ts-jest config:init). Думаю, что еще сработает - поставить в tsconfig "module": "es6"