Как протестировать свойства компонентов Svelte с помощью Vitest?
Я хочу протестировать свойства компонента Svelte с помощью Vitest .
Компонент:
<script>
export let foo
</script>
<div>{foo}</div>
Тест:
const { component } = render(MyComponent, { foo: 'bar' })
expect(component.foo).toBe('bar')
Когда я запускаю этот тест, я получаю следующую ошибку:
Реквизиты не могут быть прочитаны непосредственно из экземпляра компонента, если только они не компилируются с помощью «accessors: true» или «<svelte:options accessors/>».
Согласно этому сообщению , я должен пройтиaccessors: true
кrender()
функция:
const { component } = render(MyComponent, { accessors: true })
Однако это тоже не работает, и я продолжаю получать ту же ошибку.
Как я могу протестировать свойства компонента Svelte?
2 ответа
Вместо того, чтобы всегда включатьaccessors
опция компилятора , которая может отрицательно повлиять на производительность, вот как это сделать, только во время тестирования.vitest
автоматически устанавливает логическую переменную средыprocess.env.TEST=true
когда он работает.
/** @type {import('@sveltejs/kit').Config} */
export default {
extensions: [`.svelte`, `.svx`, `.md`],
preprocess: preprocess(),
compilerOptions: {
// enable direct prop access for vitest unit tests. now you can do
// const comp = new Component({ target: document.body, props: {...} })
// comp.access_some_prop
accessors: process.env.TEST,
},
kit: {
adapter: adapter(),
},
}
Добавьте это вsvelte.config.js
compilerOptions: {
accessors: true
},