Об этом проекте
Sinon.JS — популярная библиотека для тестирования на JavaScript, предоставляющая исчерпывающий набор инструментов для написания модульных тестов. Библиотека предлагает три ключевые концепции: шпионы, заглушки и макеты. Шпионы оборачивают функции, записывая вызовы и аргументы, заглушки заменяют функции контролируемым поведением, а макеты объединяют оба подхода для проверки ожидаемого поведения.
Библиотека спроектирована как независимая и не зависящая от тестового фреймворка, что позволяет использовать её с любыми фреймворками, такими как Mocha, Jasmine, QUnit или Jest. Она стремится к отсутствию загрязнения глобальной области видимости, простоте использования, минимальным требованиям к интеграции и бесшовной встраиваемости в любой тестовый фреймворк.
Установка выполняется просто через npm (`npm install sinon`) или с помощью браузерных сборок, доступных на домашней странице проекта. Библиотека также поддерживает CDN на основе npm для упрощённой интеграции.
Ключевые возможности включают:
- Шпионы: запись вызовов функций, аргументов и возвращаемых значений.
- Заглушки: замена функций контролируемым поведением.
- Макеты: объединение шпионов и заглушек для проверки ожидаемого поведения.
- Поддельные таймеры: готовые подделки для setTimeout, setInterval, Date и т. д.
- Отсутствие загрязнения глобальной области видимости: чистый API, не загрязняющий глобальное пространство имён.
Проект распространяется под лицензией BSD-3 и активно поддерживается при участии сообщества. Для защиты публичных API во время миграции используются контрактные тесты на основе артефактов. Каталог `lib/` содержит сгенерированный результат сборки и не фиксируется в репозитории; разработчики могут пересобрать его локально командой `npm run build`.
Sinon.JS широко используется в экосистеме JavaScript для написания надёжных и легко поддерживаемых модульных тестов. Чистый API и независимость от фреймворков делают её универсальным выбором для разработчиков, работающих в разных тестовых средах.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.