Эта статья основана на Модульное тестирование в Vue & mocha (часть 1)
Какая настройка проекта?
Какие пакеты необходимы?
Опираясь на первую статью, теперь мы можем начать смотреть, как мы будем проводить тестирование при использовании Vuex.
.spec.js
файл, использующий vuex
Цифры ниже относятся к блоку кода Modal.spec.js выше.
- Мы импортируем
vuex
, поскольку собираемся создать хранилище внутри тестового файла. createLocalVue
из vue utils. Используется для создания локального класса vue, чтобы мы могли использовать компоненты, плагины и миксины, не загрязняя глобальный класс vue.
4. sinon
импортирован. sinon позволяет создавать тестовые двойники. Например, имитация методов из компонента, который мы хотим включить в тест.
5. sinon-chai
импортирован. Расширяет Chai утверждениями для фиктивного фреймворка Sinon.JS.
6. Импортируется модальный компонент (компонент, который мы тестируем).
7. BaseButton импортирован - мы должны импортировать этот компонент, поскольку он зарегистрирован глобально.
8. chai.use
вызывается и настроен на использование sinonChai
11. createLocalVue
сохраняется в переменной для повторного использования.
12. Настройте localVue
на использование vuex.
13. Зарегистрируйте компонент BaseButton, как он был ранее зарегистрирован глобально.
16. Создайте переменную магазина.
17. Создайте геттеры, соответствующие геттерам компонентов. (здесь мы можем изменить значения, чтобы помочь нам проверить, например, если что-то скрыто в v - если мы можем изменить значение на true в тесте, чтобы оно стало доступным)
18. Создайте действия, соответствующие компоненту.
25. Сохраните mockMethod
, используя sinon.spy()
. Шпионский вызов - это объектное представление отдельного вызова шпионской функции, которая может быть фальшивым, шпионским, заглушкой или ложным методом.
28. Создается новое хранилище, передающее геттеры и действия.
33. Мы создаем версию компонента с неглубоким монтированием с переданными localVue и store.
41. setMethods
позволяет использовать методы из магазина, в этом случае мы используем созданное нами действие, соответствующее действию файла компонента TOGGLE_MODAL
. Https://vue-test-utils.vuejs.org/api/wrapper-array/#setmethods
42. find
используется для поиска селектора в компоненте. Из vue Utils https://vue-test-utils.vuejs.org/api/wrapper/#find
42. trigger
используется для передачи события, в данном случае щелчок - это событие, которое запускается для этого селектора. Https://vue-test-utils.vuejs.org/api/wrapper/trigger.html
43. Вот и тест. Мы используем expect
, чтобы утверждать, что mockmethod
to.have.been.called.calledWith
цепные методы происходят из chai и могут использоваться для тестирования множества сценариев. calledWith
может проверить, какие аргументы были переданы, таким образом мы можем быть уверены, что то, что передано, не изменится, иначе тест завершится неудачно и покажет причину.
Резюме
С помощью этого теста мы можем проверить, что было вызвано действие магазина, проверив, что произойдет, если мы инициируем событие щелчка на селекторе.
Сама логика магазина может быть протестирована независимо сама по себе, что даст вам подробный тест того, что делают каждое действие и мутация.
Есть еще много вещей, которые можно протестировать, одна из главных задач - знать, что тестировать и почему вы тестируете. Вот хорошая статья об этом:
После базовой настройки и общего представления о том, что делают основные части кода, вы можете опираться на это и использовать определенный синтаксис для тестирования большинства / всех компонентов vue. 👍