You’re browsing the documentation for Vue Test Utils for Vue v2.x and earlier.
To read docs for Vue Test Utils for Vue 3, click here.
Опции монтирования
Опции для mount и shallowMount. Объект опций может содержать как настройки монтирования Vue Test Utils, так и другие опции Vue.
СОВЕТ
Кроме опций, описанных ниже, объект options может содержать любую опцию, которую можно указать при вызове new Vue ({ /* опции здесь */ }). Эти опции будут объединены с существующими опциями компонента при монтировании с помощью mount / shallowMount
context
- Тип:
Object
Передаёт контекст в функциональный компонент. Может использоваться только с функциональными компонентами.
Пример:
import Foo from './Foo.vue' import Bar from './Bar.vue' const wrapper = mount(Component, { context: { props: { show: true }, children: [Foo, Bar] } }) expect(wrapper.is(Component)).toBe(true) slots
- Тип:
{ [name: string]: Array<Component>|Component|string }
Предоставляет объект с содержимым слотов компоненту. Ключ соответствует имени слота. Значение может быть компонентом, массивом компонентов или строковым шаблоном, или текстом.
Пример:
import Foo from './Foo.vue' const bazComponent = { name: 'baz-component', template: '<p>baz</p>' } const wrapper = shallowMount(Component, { slots: { default: [Foo, '<my-component />', 'text'], fooBar: Foo, // будет соответствовать `<slot name="FooBar" />` foo: '<div />', bar: 'bar', baz: bazComponent, qux: '<my-component />' } }) expect(wrapper.find('div')).toBe(true) scopedSlots
- Тип:
{ [name: string]: string|Function }
Предоставляет объект с содержимым слотов с ограниченной областью видимости для компонента. Ключ соответствует имени слота.
Вы можете установить имя входного параметра, используя атрибут slot-scope:
shallowMount(Component, { scopedSlots: { foo: '<p slot-scope="foo">{{foo.index}},{{foo.text}}</p>' } }) В противном случае входные параметры будут доступны как объект props при вычислении слота:
shallowMount(Component, { scopedSlots: { default: '<p>{{props.index}},{{props.text}}</p>' } }) Вы также можете передать функцию, которая принимает входные параметры в качестве аргумента:
shallowMount(Component, { scopedSlots: { foo: function (props) { return this.$createElement('div', props.index) } } }) Или вы можете использовать JSX. Если вы пишете JSX в методе, this.$createElement автоматически внедряется babel-plugin-transform-vue-jsx:
shallowMount(Component, { scopedSlots: { foo(props) { return <div>{props.text}</div> } } }) stubs
- Тип:
{ [name: string]: Component | boolean } | Array<string>
Заглушки дочерних компонентов. Может быть массивом имён компонентов заменяемых заглушкой, или объектом. Если stubs массив, каждая заглушка - <${component name}-stub>.
Пример:
import Foo from './Foo.vue' mount(Component, { stubs: ['registered-component'] }) shallowMount(Component, { stubs: { // заглушка со специальной реализацией 'registered-component': Foo, // создание заглушки по умолчанию // в нашем случае имя компонента заглушки // по умолчанию - это another-component // заглушка по умолчанию - <${the component name of default stub}-stub>. 'another-component': true } }) mocks
- Тип:
Object
Дополнительные свойства для экземпляра. Полезно при создании моков глобальных инъекций.
Пример:
const $route = { path: 'http://www.example-path.com' } const wrapper = shallowMount(Component, { mocks: { $route } }) expect(wrapper.vm.$route.path).toBe($route.path) TIP
Для создания мока $root нужно использовать опцию parentComponent как описано здесь
localVue
- Тип:
Vue
Локальная копия Vue, созданная с помощью createLocalVue для использования при монтировании компонента. Установка плагинов на этой копии Vue предотвращает загрязнение оригинальной копии Vue.
Пример:
import { createLocalVue, mount } from '@vue/test-utils' import VueRouter from 'vue-router' import Foo from './Foo.vue' const localVue = createLocalVue() localVue.use(VueRouter) const routes = [{ path: '/foo', component: Foo }] const router = new VueRouter({ routes }) const wrapper = mount(Component, { localVue, router }) expect(wrapper.vm.$route).toBeInstanceOf(Object) attachToDocument
- Тип:
boolean - По умолчанию:
false
Компонент будет прикрепляться к DOM при рендеринге, если установлено в true.
Если компонент прикреплен к DOM, вы должны вызвать wrapper.destroy() в конце вашего теста для того, чтобы удалить отрисованные элементы из документа и удалить экземпляр компонента.
attrs
- Тип:
Object
Устанавливает объект $attrs на экземпляре компонента.
propsData
- Тип:
Object
Устанавливает входные параметры экземпляра компонента, когда он примонтирован.
Пример:
const Component = { template: '<div>{{ msg }}</div>', props: ['msg'] } const wrapper = mount(Component, { propsData: { msg: 'aBC' } }) expect(wrapper.text()).toBe('aBC') TIP
Стоит отметить, что propsData относятся на самом деле к API Vue, а не к опции монтирования Vue Test Utils. Эта опция обрабатывается через extends. Смотрите также другие опции.
listeners
- Тип:
Object
Устанавливает объект $listeners на экземпляре компонента.
parentComponent
- Тип:
Object
Компонент для использования в качестве родительского для смонтированного компонента.
Пример:
import Foo from './Foo.vue' const wrapper = shallowMount(Component, { parentComponent: Foo }) expect(wrapper.vm.$parent.$options.name).toBe('foo') provide
- Тип:
Object
Передаёт свойства в компоненты для использования в инъекциях. См. provide/inject.
Пример:
const Component = { inject: ['foo'], template: '<div>{{this.foo()}}</div>' } const wrapper = shallowMount(Component, { provide: { foo() { return 'fooValue' } } }) expect(wrapper.text()).toBe('fooValue') Другие опции
Если в параметрах для mount и shallowMount содержатся другие опции, отличные от опций монтирования, опции компонента будут перезаписаны с помощью extends.
const Component = { template: '<div>{{ foo() }}{{ bar() }}{{ baz() }}</div>', methods: { foo() { return 'a' }, bar() { return 'b' } } } const options = { methods: { bar() { return 'B' }, baz() { return 'C' } } } const wrapper = mount(Component, options) expect(wrapper.text()).toBe('aBC')