【发布时间】:2020-01-28 21:50:04
【问题描述】:
我有一个类似于 the example in the docs 的设置,其中我的 composition 与我的组件位于一个单独的文件中,如下所示:
// composition.js
import { onMounted } from '@vue/composition-api';
export default function useComposition() {
onMounted(() => {
console.log('Hello, world!');
});
}
// component.vue
<template>...</template>
<script>
import { createComponent } from '@vue/composition-api';
export default createComponent({
setup() {
useComposition();
}
})
</script>
我想为 composition.js 文件编写一个单独的(基于 Jest 的)测试文件。但是,直接调用组合时,Vue会报错(预期):
// composition.test.js
import useComposition from './composition';
describe('Composition', () => {
it('Works', () => {
useComposition();
// Error: [vue-composition-api] "onMounted" get called outside of "setup()"
});
});
我已尝试安装基于模拟组合 API 的组件以提供 setup() 函数,但在使其工作时遇到了一些问题:
import { mount, createLocalVue } from '@vue/test-utils';
import VueCompositionAPI, { createComponent } from '@vue/composition-api';
import useComposition from './composition';
const localVue = createLocalVue();
localVue.use(VueCompositionAPI);
describe('Composition', () => {
it('Works', () => {
const mockComponent = createComponent({
setup() {
useComposition();
return h => h('div');
}
});
mount(mockComponent, { localVue });
// [Vue warn]: Failed to mount component: template or render function not defined.
});
});
是否有人对如何让它发挥作用有什么好主意,以便我可以为我的模块化组合编写测试?
【问题讨论】:
标签: vue.js jestjs vue-test-utils vue-composition-api