У меня есть настройка, аналогичная , пример в документации , где моя композиция находится в отдельном файле от моего компонента следующим образом:
// 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>
Я хотел бы написать отдельный (основанный на Jest) тестовый файл только для файла composition.js
. Однако при непосредственном вызове композиции 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.
});
});
У кого-нибудь есть какие-нибудь блестящие идеи о том, как заставить это работать, чтобы я мог написать тесты для своих модульных композиций?