unit-testing - 如何使用 Vitest 测试 Svelte 组件 props?

标签 unit-testing svelte vitest svelte-testing-library

我想测试 Svelte 的 props组件 Vitest .

组件:

<script>
  export let foo
</script>

<div>{foo}</div>

测试:

const { component } = render(MyComponent, { foo: 'bar' })
expect(component.foo).toBe('bar')

当我运行此测试时,出现以下错误:

Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'

根据this post ,我应该将 accessors: true 传递给 render() 函数:

const { component } = render(MyComponent, { accessors: true })

但是,这也不起作用,并且我不断收到相同的错误。

如何测试 Svelte 组件 props?

最佳答案

而不是总是启用 accessors compiler option这可能会对性能产生负面影响,以下是仅在测试时执行此操作的方法。 vitest 在运行时自动设置 bool 环境变量 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(),
  },
}

关于unit-testing - 如何使用 Vitest 测试 Svelte 组件 props?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75435234/

相关文章:

javascript - 奇怪的行为删除关键字phantomjs

svelte - 我可以在 HTML 页面上有多个 Svelte 组件吗?

c# - 测试 UWP 蓝牙应用程序

visual-studio - 如何在Visual Studio中设置$(OutDir),$(TargetName),$(TargetExt)和%(Lib.OutputFile)?

php - Magento - 单元测试

javascript - Svelte 每个循环都不会更新,而对象是动态更改的

svelte - 使用 import 或 fetch 动态加载组件

nuxt.js - 使用 vitest 测试 Nuxt3 中的 Pinia 存储,抛出 `useRuntimeConfig` 未定义

javascript - Vitest - FormData 不是测试单元的构造函数问题