От тестирования одного файла javascript до тестирования проекта Angular
Javascript - один из самых популярных языков программирования в настоящее время. Мы отправляем тысячи строк кода в производство каждый день, и уверенная доставка очень важна как для бизнеса, так и для разработчиков. Очень сложно предсказать поведение приложения в производственной среде, и небольшая ошибка в производственной среде приводит к неожиданному поведению и недоступности приложений.
Jasmine - отличная среда для тестирования приложений javascript, которая предоставляет множество хороших функций для тестирования приложений как в браузере, так и на стороне сервера. Jasmine - это фреймворк javascript, управляемый поведением, и в сочетании с karma средство запуска тестов становится мощным средством тестирования для наших приложений javascript.

Вот темы, которые мы рассмотрим в этой статье
- Тестирование с жасмином в браузере
- Тестирование с жасмином на сервере (узле)
- Методы установки и удаления
- целенаправленные, ожидающие и пропущенные тесты
- Использование этого ключевого слова
- Интеграция с кармой (javascript)
- Интеграция с кармой (машинописный текст)
- Тестирование с помощью простого проекта angular
Тестирование с жасмином в браузере
Скачайте автономный zip-архив jasmine отсюда. После загрузки и распаковки вы увидите следующую структуру папок, все исходные файлы находятся в src, а все тестовые спецификации - в spec папка

Давайте удалим файлы spec и src по умолчанию и поместим эти файлы в эти папки.
Calculator.js - это простой файл, в котором есть три метода сложения, вычитания и умножения, а CalculatorSpec.js - файл спецификации, который проверяет все методы.
Загрузите SpecRunner.html в браузер, и мы сможем увидеть результаты, и мы можем щелкнуть каждый результат, чтобы увидеть конкретный результат.

Тестирование с жасмином на сервере (узле)
настроить жасмин на стороне сервера довольно просто. Сделаем следующие шаги.
// create a nodejs project npm init // install dependencies for jasmine and console reporter npm install jasmine --save npm install jasmine-console-reporter --save-dev
Добавьте два файла Calculator.js и CalculatorSpec.js.

Важной частью здесь является jasmine.js, который является файлом конфигурации для jasmine. Он состоит из папки spec, и мы используем jasmine-console-reporter для вывода на консоль.
Давайте запустим npm test, чтобы увидеть следующий результат. Мы видим аналогичный результат, как и в версии браузера. Вот полный проект с GitHub.

Методы установки и удаления
Существуют методы настройки и разборки тестов.
beforeEach () и afterEach () запускаются до и после каждого набора тестов.
beforeAll () и afterAll () запускаются до и после всех наборов тестов.

Давайте применим это на практике: у нас есть этот файл со всеми методами настройки и удаления.
Мы можем увидеть порядок этих методов в действии.

целенаправленные, ожидающие и пропущенные тесты
На самом деле мы можем запускать определенные тесты, пропускать некоторые тесты и даже можем объявить некоторые из них в состоянии ожидания.
сосредоточенный
мы можем просто добавить f к методу it (), чтобы запустить только этот конкретный тест.

в ожидании
Мы можем просто добавить ожидающие (сообщение) в любой метод, чтобы пометить тесты как ожидающие.

исключать
Мы можем пропустить тест с помощью метода xit ().

Использование этого ключевого слова
Мы можем инициализировать и совместно использовать переменные с помощью ключевого слова this в jasmine среди методов beforeEach (), it () и afterEach ().
Давайте посмотрим на это в действии.

Интеграция с кармой (Javascript)
Зачем нам карма?
Karma - это средство запуска тестов для приложений javascript, все, что нам нужно для определения файла конфигурации, и karma позаботятся от запуска тестов до их отображения в браузере. Мы даже можем настроить, в каком браузере запускать тесты.
Например, мы запускаем CalculatorSpec.js в браузере с помощью SpecRunner.html, и каждый раз, когда нам нужно запускать этот html-файл вручную, и нам нужно перезагружать каждый раз, когда мы редактируем тестовые файлы. Karma - отличный инструмент для автоматизации всего этого для нас.
Давайте применим все это на практике.
Теперь у нас есть два простых файла test.spec.js и Calculator.spec.js, которые мы хотим запустить с кармой. Вот полный проект

Во-первых, нам нужно установить все эти зависимости и запустить karma test или npm test
// install all these dependencies npm install jasmine-core karma karma-chrome-launcher karma-jasmine karma-jasmine-html-reporter karma-spec-reporter --save-dev
Затем нам нужно добавить karma.conf.js, в котором есть все настройки для запуска тестов, такие как используемые фреймворки, браузер, расположение файлов и т. Д.
Когда мы запускаем npm test, который автоматически запускает браузер и отображает результаты как в стандартном выводе, так и в браузере.


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

Интеграция с кармой (машинописный текст)
Нам нужно использовать веб-пакет для преобразования машинописного текста в javascript и тестирования этого транспилированного пакета.
Различия в том, что у нас есть файлы .ts и веб-пакет, который транслируется в javascript и указывает карму на каталог пакета для запуска тестов.

Давайте запустим npm test, чтобы увидеть результаты в браузере.


Тестирование с помощью простого проекта angular
Давайте протестируем простой проект Angular с жасмином и кармой. Я создал следующий проект с помощью angular CLI, и этот проект поставляется с настройкой кармы и жасмина и запускает все компоненты из коробки. Мы можем изменить компоненты и написать наши тестовые примеры в соответствии с нашими требованиями.
Все, что нам нужно сделать, это запустить npm test, чтобы запустить тесты в проекте angular.

Заключение
Мы рассмотрели основы жасмина, кармы и то, как настроить среду тестирования с их помощью. Понимание этих фреймворков тестирования очень важно, поскольку написание приложения не менее важно, чем написание модульных тестов.
Спасибо, что прочитали, и если вы сочтете это полезным, хлопните в ладоши и помогите другим найти его. Следуйте за мной, чтобы узнать больше интересных историй :)