---
id: ssh2-vue-testing-best-practices
name: "vue-testing-best-practices"
url: https://skills.yangsir.net/skill/ssh2-vue-testing-best-practices
author: antfu
domain: testing
tags: ["vue.js-testing", "unit-testing", "component-testing", "vue-test-utils", "jest/vitest"]
install_count: 11800
rating: 4.50 (156 reviews)
github: https://github.com/antfu/skills
---

# vue-testing-best-practices

> 掌握Vue.js测试的最佳实践，涵盖Vitest、Vue Test Utils和组件测试，确保Vue应用的高质量和稳定性。

**Stats**: 11,800 installs · 4.5/5 (156 reviews)

## Before / After 对比

### Vue.js组件测试策略的优化升级：传统低效方法与Vitest/Vue Test Utils最佳实践的对比

## Readme

Vue.js testing best practices, patterns, and common gotchas.

### Testing
- Setting up test infrastructure for Vue 3 projects → See [testing-vitest-recommended-for-vue](reference/testing-vitest-recommended-for-vue.md)
- Tests keep breaking when refactoring component internals → See [testing-component-blackbox-approach](reference/testing-component-blackbox-approach.md)
- Tests fail intermittently with race conditions → See [testing-async-await-flushpromises](reference/testing-async-await-flushpromises.md)
- Composables using lifecycle hooks or inject fail to test → See [testing-composables-helper-wrapper](reference/testing-composables-helper-wrapper.md)
- Getting "injection Symbol(pinia) not found" errors in tests → See [testing-pinia-store-setup](reference/testing-pinia-store-setup.md)
- Components with async setup won't render in tests → See [testing-suspense-async-components](reference/testing-suspense-async-components.md)
- Snapshot tests keep passing despite broken functionality → See [testing-no-snapshot-only](reference/testing-no-snapshot-only.md)
- Choosing end-to-end testing framework for Vue apps → See [testing-e2e-playwright-recommended](reference/testing-e2e-playwright-recommended.md)
- Tests need to verify computed styles or real DOM events → See [testing-browser-vs-node-runners](reference/testing-browser-vs-node-runners.md)
- Testing components created with defineAsyncComponent fails → See [async-component-testing](reference/async-component-testing.md)
- Teleported modal content can't be found in wrapper queries → See [teleport-testing-complexity](reference/teleport-testing-complexity.md)

## Reference

- [Vue.js Testing Guide](https://vuejs.org/guide/scaling-up/testing)
- [Vue Test Utils](https://test-utils.vuejs.org/)
- [Vitest Documentation](https://vitest.dev/)
- [Playwright Documentation](https://playwright.dev/)


---
*Source: https://skills.yangsir.net/skill/ssh2-vue-testing-best-practices*
*Markdown mirror: https://skills.yangsir.net/api/skill/ssh2-vue-testing-best-practices/markdown*