Тестирование Vue с помощью jest и vue-test-utils не позволяет разрешить компоненты, введенные через app.component().

В настоящее время я пытаюсь ввести тестирование в свое приложение Vue 3 Vite.
Для этого я использую jest и vue-test-utils.
Это работает нормально, за исключением случаев, когда я пытаюсь смонтировать компоненты, содержащие мои базовые компоненты, которые я ввожу с помощью app.component(basecomponent) перед app.mount(#app); в моем приложении.
Пока тест все еще выполняется, я получаю сообщение об ошибке:

[Vue warn]: Failed to resolve component: base-card 
      at <Anonymous ref="VTU_COMPONENT" > 
      at <VTUROOT>

Теперь мой вопрос: как лучше всего сделать это доступным для теста? Или что я сделал не так, так как это не работает?
Заранее спасибо за все ответы :)


person stackmeister    schedule 25.03.2021    source источник


Ответы (2)


@stackmeister Вы импортировали этот компонент в свой тест? Вы также можете попробовать добавить эту часть кода:

    components: {
    base-card
  },
person Kipo CTO    schedule 07.05.2021
comment
Это также необходимо при использовании мелкого монтирования? Я по-прежнему получаю предупреждение для всех своих компонентов, даже при использовании мелкого монтирования. Мои компоненты не являются глобальными компонентами. - person Casper Slynge; 08.07.2021

Вы можете добавлять компоненты при монтировании через global.components:

const wrapper = mount(Component, {
  global: {
    components: {
      'base-card': BaseCard
    }
  }
})

Кроме того, вы можете включить компоненты глобально, используя config:

// jest.setup.js

import { config } from '@vue/test-utils'

config.global.components = {
  'base-card': BaseCard
}
person Jaye Renzo Montejo    schedule 06.07.2021