Установка и настройка окружения

Установка Jasmine через npm

Jasmine является популярным фреймворком для тестирования JavaScript, который поддерживает как синхронные, так и асинхронные тесты. Наиболее распространённый способ установки — через npm.

  1. Инициализация проекта Для начала необходимо создать новый проект или использовать существующий:

    mkdir my-project
    cd my-project
    npm init -y

    Команда npm init -y создаёт файл package.json с базовыми настройками проекта.

  2. Установка Jasmine Для локальной установки Jasmine в проект выполняется:

    npm install --save-dev jasmine

    Флаг --save-dev указывает, что Jasmine используется только в среде разработки.

  3. Инициализация Jasmine После установки необходимо инициализировать структуру для тестов:

    npx jasmine init

    Эта команда создаёт каталог spec для тестов и файл конфигурации spec/support/jasmine.json.

Структура проекта и конфигурация

После инициализации проект имеет стандартную структуру:

my-project/
├── node_modules/
├── spec/
│   ├── support/
│   │   └── jasmine.json
├── package.json
  • spec/ — директория для всех тестов.

  • spec/support/jasmine.json — файл конфигурации Jasmine, содержащий настройки тестового окружения:

    • spec_dir — каталог для поиска тестов.
    • spec_files — шаблон для поиска файлов тестов (по умолчанию **/*[sS]pec.js).
    • helpers — файлы-хелперы, подключаемые перед выполнением тестов.

Пример базовой конфигурации jasmine.json:

{
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "helpers": [
    "helpers/**/*.js"
  ]
}

Настройка npm-скрипта для тестирования

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

{
  "scripts": {
    "test": "jasmine"
  }
}

После этого тесты выполняются командой:

npm test

Установка глобально (опционально)

Иногда удобно установить Jasmine глобально:

npm install -g jasmine

После этого доступна команда jasmine в любом проекте. Однако локальная установка предпочтительнее для контроля версий и совместимости проекта.

Интеграция с редакторами и IDE

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

  • VS Code: расширения Jasmine Test Explorer или Jest & Jasmine Runner.
  • WebStorm: встроенная поддержка Jasmine с возможностью быстрого запуска отдельных тестов.
  • Расширения для отчетов: jasmine-reporters позволяет выводить результаты в формате HTML или JUnit, что полезно при интеграции с CI/CD.

Настройка работы с современным JavaScript

Если проект использует ES6+ или TypeScript, необходимо учитывать совместимость с Jasmine:

  • Для ES6-модулей установить babel и подключить его через babel-register в helpers:
npm install --save-dev @babel/core @babel/preset-env @babel/register
  • Создать файл spec/helpers/babel.js с содержимым:
require('@babel/register')({
  presets: ['@babel/preset-env']
});
  • Добавить этот файл в helpers конфигурации jasmine.json:
"helpers": [
  "helpers/babel.js"
]

Для TypeScript используется ts-node:

npm install --save-dev ts-node typescript

Файл helpers/ts-helper.js подключается аналогично:

require('ts-node').register();

Настройка асинхронных тестов

Jasmine поддерживает промисы и async/await. Для корректной работы в современном проекте достаточно убедиться, что окружение поддерживает ES2017+.

Пример асинхронного теста:

describe('Асинхронная функция', () => {
  it('должна вернуть правильное значение', async () => {
    const result = await asyncFunction();
    expect(result).toBe(42);
  });
});

Интеграция с CI/CD

Для автоматического запуска тестов при каждом коммите удобно использовать CI-системы (GitHub Actions, GitLab CI, Jenkins):

# Пример GitHub Actions
name: Jasmine Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 20
      - run: npm install
      - run: npm test

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