Performance: Mocking composables and stores
MEDIUM IMPACT
This affects page load speed and interaction responsiveness by controlling how much code and state logic runs during testing or development.
import { vi } from 'vitest'; import { useUserStore } from '@/stores/user'; vi.mock('@/stores/user', () => ({ useUserStore: () => ({ user: { name: 'Test' }, fetchUser: vi.fn() }) })); export default { setup() { const userStore = useUserStore(); return { userStore }; } };
import { useUserStore } from '@/stores/user'; export default { setup() { const userStore = useUserStore(); return { userStore }; } };
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Using real composables/stores in tests | High (full reactive tree) | Multiple reflows per state change | High paint cost due to frequent updates | [X] Bad |
| Mocking composables/stores with lightweight fakes | Low (minimal reactive nodes) | Single or no reflows | Low paint cost with fewer updates | [OK] Good |