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

Чтобы продолжить чтение статьи, я полагаю, что у вас уже есть базовые знания о Vue и модульных тестах с Jest.

Возможно, это случалось с пользователями из Nuxt.js до того, как было легко импортировать пользовательский элемент с vue.component в папку плагинов с nuxt.config.js, не загрязняя базовый код, но если вы используете Vue, вы можете использовать его в main.js с тем же кодом.

В этой статье я использую Nuxt.js для иллюстрации ошибки с Jest.

Проблема

Я импортировал множество пользовательских компонентов с помощью vue.component с такой структурой:

плагины/custom-elements.js

import Vue from 'vue'
import custom_header from '~/components/Custom/Header.vue
Vue.component('custom-element', custom_header)

и он находится в nuxt.config.js:

plugins: ["~/plugins/custom-elements"]

Пользовательские элементы теперь успешно работают, но мы используем их в тесте в пользовательском представлении/странице с помощью Jest?

тест/App.spec.js

Консоль возвращает следующую ошибку:

[Vue warn]: Unknown custom element: <custom-element> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

Хорошо, это легко решить, но это не кажется таким простым. В сети много одинаковых вопросов и разных вариантов, которые мне не подошли.

Решение

Помните, ясоздавал пользовательские элементы без подключаемого модуля? Ошибка здесь, вам нужно передать ее пользовательскому плагину и заменить его в Vue/Nuxt, вызвав плагин с помощью Vue.use, и изменить юнит-тест с помощью createLocalVue.

Теперь давайте создадим собственный плагин в Vue с той же структурой:

плагины/custom-plugin.js

и он находится в nuxt.config.js:

plugins: ["~/plugins/custom-plugin"]

или в main.js (возможно, вы используете Vue):

Возвращаясь к основной проблеме с Jest, я заменил код этой структуры:

Теперь работает с Units Test без ошибки от Unknown custom element.

Я хочу, чтобы это решило вашу проблему с пользовательскими элементами!

Спасибо за чтение, и если это поможет вам, не забудьте поставить лайк этой статье.