我想测试这个FooComponent
:
<div>
<slot :fn="internalFn" />
</div>
它是这样使用的(例如在ParentComponent
中):
<FooComponent>
<template slot-scope="slotProps">
<BarComponent @some-event="slotProps.fn" />
</template>
</FooComponent>
所以我想测试我的组件在从插槽props 调用这个"fn"时的react .我看到的最简单的方法是采用方法本身并调用它,如下所示:
cosnt wrapper = shallowMount(FooComponent, /* ... */)
wrapper.vm.methods.internalFn(/* test payload */)
expect(wrapper.emitted()).toBe(/* some expectation */)
但这被称为测试内部实现的反模式.所以我想通过传送到插槽中的prop fn
来测试它,因为它也是某种组件接口,比如组件自己的prop.
但如何测试props 通过槽?我可以想象,只有在我测试ParentComponent
个类似的东西时,它才会起作用:
const wrapper = shallowMount(ParentComponent, /* ... */)
const foo = wrapper.find(FooComponent)
wrapper.find(BarComponent).vm.$emit('some-event', /*...*/)
/* write expectations against foo */
但这感觉就像是FooComponent
次测试,ParentComponent
次内部测试
也许有更好的方法?