Автор оригинала: FreeCodeCamp Community Member.
EDD Yerburgh
Лента самая быстрая рамка для Устройство тестирования Vue компоненты.
В этой статье мы увидим, как написать тесты Vue Build с ленточными и Vue Test Utils.
Это руководство для пользователей, знакомых с помощью тестирования подразделения. Если вы новичок в модуль тестирования, проверьте Установка тестирования Vue компонентов для начинающих.
Что такое лента?
Лента представляет собой самые голые кости, которые выводят отчет о тестировании в Нажмите (Тест на что-нибудь протокол) формат.
У него есть простое API, чтобы утверждать, что ваши компоненты JavaScript и Vue ведут себя правильно.
Почему лента?
Пару недель назад я провел некоторые тесты производительности на разных структурах тестирования. Я хотел выяснить, какие рамки были самыми быстрыми для тестирования Vue SFCS (одновременные файловые компоненты).
Я добавил ленту для полноты, и был шокирован, чтобы найти это самая быстрая структура выполнения.
Чтобы запустить тесты на ленте, нам нужно сделать некоторую настройку. Давайте погрузиться прямо в.
Загрузка проекта
Я сделал простой стартерский проект для начала. Git клонировать проект в каталог:
git clone https://github.com/eddyerburgh/jest-vue-starter.git
CD
В него и установите зависимости:
cd jest-vue-starter && npm install
Запустите сервер Dev AS NPM запустить dev
Чтобы проверить приложение.
Это довольно просто. Основной точкой этого учебника состоит в том, чтобы увидеть, как настроить ленту и VUE, не писать сложные тесты.
Настройка ленты и Vue Test Utils
Во-первых, что нужно сделать, это установить ленточные и Vue Test Utils:
npm install --save-dev tape @vue/test-utils
Vue Test Utils находится в бета-версии, поэтому нам нужно явно запросить версию
Vue Test Utils нуждается в среде браузера для запуска. Это не значит, что нам нужно запустить тесты в браузере (полное благодарность!).
Мы можем использовать JSDOD для настройки среды браузера в узле. Добавляет глобальные переменные, такие как Документ
и окно
к узлу.
JSDOM – это немного боли для настройки. К счастью, какой-то предприимчивый узел разработчик сделал библиотеку обертки под названием браузер-env
Отказ
npm install --save-dev browser-env
Нам нужно запустить браузер-env
до испытаний. Лента позволяет нам определить файлы для запуска перед тестами, мы сделаем это в сек.
Vue SFC необходимо скомпилировано, прежде чем они испытывают. Мы можем использовать требуют крючки Чтобы запустить WebPack на файлы, когда они требуются в узле. Это простая настройка.
Сначала установите требуют удлинения-крючки
И его варианты:
npm install --save-dev require-extension-hooks require-extension-hooks-babel require-extension-hooks-vue
Давайте сделаем этот файл установки, о котором я говорил ранее. Создать Тест
каталог, и добавьте setup.js
файл. Последний путь будет Тест/setup.js
Отказ
Мы почти там. Сумасшедшие вещи.
Давайте напишем дымовой тест на ленте. Создайте новый файл под названием List.spec.js
в тестовом каталоге. Полный путь Тест/list.spec.js
Отказ Скопируйте тест ниже в файл:
Что там происходит? Мы определяем Тест
и получи T
объект в обратном вызове. T
Объект содержит методы утверждения. У этого также есть План
метод. Нам нужно сказать, сколько тестов следует ожидать.
Теперь нам нужен скрипт для проведения тестов. Открыть Package.json
И добавьте этот скрипт:
"unit": "tape ./test/specs/*.spec.js -r ./test/setup.js"
Это говорит о ленте, чтобы запустить все .spec
Файлы в Тест/спецификации
Отказ -R
Рассказывает ленту к требуется
или запустить Тест/установка
перед запуском наших тестов.
Запустите единица
Тесты:
npm run unit
У вас есть проходящий тест. Но Hoo Boy – это какой-то уродливый тестовый выход ☹️
Помните, что я упомянул на кран раньше? Это кран в голой славе. Довольно уродливо правильно? Не волнуйтесь, мы можем нанести это.
Установить Tap-Spec
:
npm install --save-dev tap-spec
Мы можем трусить наш кран выхода с ленты. Изменить единица
Скрипт для трубы вывода на Tap-Spec
:
"unit": "tape ./test/specs/*.spec.js -r ./test/setup.js | tap-spec"
И снова запустить тесты:
npm run unit
Намного лучше ?
Письменные тесты с ленты и Vue Test Utils
Давайте напишем некоторые тесты. Поскольку мы используем Vue Test Utils, тесты довольно читаются.
В List.spec.js
мы собираемся написать Тест
который проходит Предметы
Массив на Список
Отказ Мы будем использовать неглубокий Метод от Vue Test Utils для неглубокого монтажа компонента. неглубокий
Возвращает обертка
содержащий монтируемый компонент. Мы можем использовать Findall Чтобы найти дерево визуализации для <
Li> Теги, и проверьте, сколько там есть.
Скопируйте тест снизу в Тест/specs/list.spec.js
Отказ
Посмотрите, как проходят тесты с NPM Run Build
Отказ Обратите внимание, у нас есть пользовательское сообщение об ошибке для OUT T.equals
утверждение. Сообщения по умолчанию не очень читаемые, поэтому лучше добавить на себя.
Теперь добавьте новый файл Тест/спецификация/messageToggle.spec.js
Отказ Здесь мы напишем тест, вы уже догадались, MessageToggle.Vue
Отказ
Мы собираемся написать два теста сейчас. Один проверит тег.<
; P> Tag отображает сообщение по умолчанию. Мы …| l Используйте s Hallow еще раз, чтобы получить обертку, содержащую установленную компонент, а нам
E-й E Text Method для возврата текста Insid
E T Он
Второй тест похож. Мы утверждаем, что сообщение изменится, когда Toggle-Message
кнопка нажата. Для этого мы можем использовать триггер метод.
Скопируйте код ниже в Тест/спецификация/messageToggle.spec.js
:
Запустите тесты снова с NPM Run Build
Отказ Woop-зеленые тесты?
Плюсы и минусы ленты
Теперь мы добавили некоторые тесты, давайте посмотрим на плюсы и минусы использования ленты.
Плюс
- Это быстро Как действительно быстро?
- Это просто Вы можете прочитать исходный код, чтобы
- Он использует кран Отказ Поскольку TAP – это стандарт, есть много программ, которые работают непосредственно с краном Как модуль Tap-Spec, мы просто побудили несколько текста Tap, и он претендовал для нас
- Ограниченные утверждения Ограниченные утверждения сохраняют ваши утверждения легко понять
Господин
- Ограниченные утверждения Это концом тоже Вы можете получить полезные сообщения об ошибках с утверждениями, такими как
Hasbeencalledwith
Это трудно реплицироваться сT.equal
- Это разрывается Когда вы проходите более 10000 тестов Вы, вероятно, не ударите это. Но это может быть выключатель сделки для большого проекта Vue
- Это базовый Вам нужно будет использовать другие библиотеки для издевания, заглушения и подделки
Плюсы и минусы довольно похожи. Лента основана, и это может быть хорошей или плохой вещью в зависимости от того, кого вы спрашиваете.
Самое главное, хотя это быстро пылает!
Фаст-модульные тесты – это хорошие модульные тесты.
Призыв к действию
Лучший способ выработать новую тестовую структуру – это использовать его.
На следующем проекте Vue вы начинаете, попробуйте ленту. Вы можете найти список утверждений на ленте Readme Отказ
Наслаждаться ?
Вы можете найти готовый репо на Github.