Jasmine является популярным фреймворком для тестирования JavaScript, который поддерживает как синхронные, так и асинхронные тесты. Наиболее распространённый способ установки — через npm.
Инициализация проекта Для начала необходимо создать новый проект или использовать существующий:
mkdir my-project
cd my-project
npm init -y
Команда npm init -y создаёт файл
package.json с базовыми настройками проекта.
Установка Jasmine Для локальной установки Jasmine в проект выполняется:
npm install --save-dev jasmine
Флаг --save-dev указывает, что Jasmine используется
только в среде разработки.
Инициализация 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"
]
}
Для удобства запуска тестов можно добавить скрипт в
package.json:
{
"scripts": {
"test": "jasmine"
}
}
После этого тесты выполняются командой:
npm test
Иногда удобно установить Jasmine глобально:
npm install -g jasmine
После этого доступна команда jasmine в любом проекте.
Однако локальная установка предпочтительнее для контроля версий и
совместимости проекта.
Для удобной работы рекомендуется подключение следующих инструментов:
Jasmine Test Explorer или
Jest & Jasmine Runner.jasmine-reporters позволяет выводить результаты в формате
HTML или JUnit, что полезно при интеграции с CI/CD.Если проект использует ES6+ или TypeScript, необходимо учитывать совместимость с Jasmine:
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-системы (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
Такое окружение обеспечивает стабильный запуск тестов на каждом изменении кода.