Существует множество руководств по тестированию JS, в большинстве из них используется какая-то среда тестирования, такая как mocha, какая-то инструментальная цепочка, такая как grunt, какая-то другая библиотека для этого и что-то еще для этого.
Иногда мне кажется, что разработчики тратят больше времени на настройку, а не на то, что действительно важно: тесты и покрытие кода.
Сегодня в качестве упражнения я установил значок покрытия кода, набрав 100%, используя инструмент, который по умолчанию доступен всем: console.assert(condition)
Честно говоря, этот проект был относительно простым, и он появился после того, как суть уже была протестирована многими способами, но вы поняли: для него было прямо писать тесты и даже быстрее настраивать его для покрытия.
Что нужно знать о покрытии кода
Использование justconsole.assert()
не дает вам баллов, вам нужен правильный синтаксический анализатор кода, способный охватить каждую часть вашего кода, и IstanbulJS справляется с этой частью довольно хорошо, и это беспроблемная утилита.
npm install --save-dev istanbul
istanbul cover test.js
Вы в основном закончили. Вы запускаете тот же тест, который выполняли ранее через npm test
, за исключением того, что в конце вы увидите результат. Замените часть сценария вашего package.json
уже и проверьте свое покрытие… круто?
Что вам нужно, чтобы увидеть покрытие на GitHub
Это уже менее важно, но знание того, что есть тесты, последняя сборка в порядке и покрытие высокое, является первым и наиболее важным правилом при выборе любого стороннего программного обеспечения, которое вы хотите включить в свой проект.
Сделать его видимым помогает вовлекаться в новые проекты, в то время как в наши дни нельзя запретить тестирование каких-либо проектов с открытым исходным кодом, связанных с программным обеспечением.
Здесь есть два бесплатных помощника: один называется Travis Ci, удаленный сервер, используемый для автоматизированных задач непрерывной интеграции, и Coshops, который понимает файлы покрытия, созданные IstanbulJS, и показывает статистику и значок.
После того, как вы авторизуете свою учетную запись GitHub на этих двух веб-сайтах, все, что вам нужно сделать, это включить отслеживание своего репозитория и добавить .travis.yml
файл для Трэвиса и "coveralls": "cat ./coverage/lcov.info | coveralls"
под своими package.json
скриптами, которые будут использовать istanbul
для покрытия тестов.
Репозиторий как пример
Я создал репозиторий vanilla-code-coverge, сконфигурированный так, чтобы иметь минимально необходимый минимум для отображения значков сборки и покрытия в репозитории.
Если есть одна лишняя вещь, которую я мог бы предложить, это использовать consolemd в качестве дополнительной зависимости разработчика, как я сделал в classtrophobic test и других, чтобы вы могли легко выделить имя теста и сделать ОК или ошибку яркими. Так просто и в то же время так приятно.
Получайте удовольствие, тестируя и освещая как можно больше.