Я хочу проверить это FooComponent
:
<div>
<slot :fn="internalFn" />
</div>
Это используется так (ParentComponent
):
<FooComponent>
<template slot-scope="slotProps">
<BarComponent @some-event="slotProps.fn" />
</template>
</FooComponent>
Поэтому я хочу проверить, как мой компонент реагирует наназывая это "FN" из реквизита слота.Самый простой способ, который я вижу, - это взять сам метод и вызвать его так:
cosnt wrapper = shallowMount(FooComponent, /* ... */)
wrapper.vm.methods.internalFn(/* test payload */)
expect(wrapper.emitted()).toBe(/* some expectation */)
Но это хорошо известно как анти-шаблон для проверки внутренней реализации.Поэтому вместо этого я хотел бы протестировать его с помощью пропеллера fn
, переданного в слот, потому что это также своего рода интерфейс компонента, например, собственный компонент компонента.
Но как проверить пропуски, пропущенные в слот?Я могу представить, что это работает только в том случае, если я проверяю ParentComponent
что-то вроде этого:
const wrapper = shallowMount(ParentComponent, /* ... */)
const foo = wrapper.find(FooComponent)
wrapper.find(BarComponent).vm.$emit('some-event', /*...*/)
/* write expectations against foo */
Но это похоже на тесты для FooComponent
внутри тестов для ParentComponent
Может бытьесть лучший способ сделать это?