Vue Test Utils (VTU) является официальной библиотекой для
юнит-тестирования компонентов Vue. Каждая основная версия VTU строго
привязана к версии Vue, для которой она предназначена. Например,
@vue/test-utils@1.x поддерживает Vue 2, а
@vue/test-utils@2.x ориентирована на Vue 3. При обновлении
проекта важно учитывать соответствие версии библиотеки версии
Vue, иначе тесты могут не работать или выдавать неожиданные
ошибки.
Перед обновлением следует определить текущую установленную версию
VTU. Это можно сделать через npm или yarn:
npm list @vue/test-utils
или
yarn list @vue/test-utils
Результат покажет точную версию и позволит определить необходимость обновления.
Обновление VTU включает несколько аспектов:
mount,
shallowMount, find, trigger и
других.setup() могут требовать обновления тестов для корректной
работы.Для Vue 2:
npm install @vue/test-utils@^1.3.0 --save-dev
Для Vue 3:
npm install @vue/test-utils@^2.7.0 --save-dev
Yarn использует аналогичные команды:
yarn add @vue/test-utils@^2.7.0 --dev
Важно проверять документацию версии VTU для уточнения минимальных требований к Vue.
Методы поиска элементов:
wrapper.findComponent() теперь лучше определяет
компоненты по их типу, а не только по имени.wrapper.find() и wrapper.findAll()
изменили обработку селекторов в Vue 3. Например, классы и атрибуты
теперь чувствительны к DOM-структуре компонентов.События и триггеры:
trigger('click') теперь возвращает промис, что
требует использования await при асинхронных
обновлениях.setValue() также асинхронный в Vue 3, поэтому
обновления состояния компонента должны ожидаться через
await wrapper.vm.$nextTick() или через
await flushPromises().Монтирование компонентов:
shallowMount() в Vue 3 поддерживает новые опции
global.mocks, global.stubs, и
global.provide для удобного подменивания зависимостей.После установки новой версии VTU часто требуется рефакторинг существующих тестов:
await там, где
это необходимо.Для облегчения перехода можно использовать:
Рекомендуется использовать lock-файлы
(package-lock.json или yarn.lock) для
фиксации версий VTU и связанных библиотек. После обновления все тесты
должны быть прогнаны автоматически, чтобы выявить несовместимости:
npm test
или
yarn test
Любые сбои сигнализируют о необходимости корректировки тестов под новый API.
Обновление Vue Test Utils требует системного подхода:
Эта последовательность обеспечивает плавный переход и корректное функционирование тестов при обновлении VTU.