Perguntas Frequentes
Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →
Esta biblioteca também funciona com o SvelteKit?
Sim, funciona. Requer a mesma configuração de um projeto Svelte "normal".
Por que o onMount não é chamado ao renderizar componentes?
Como os testes são executados em ambiente Node em vez de navegador, utilizam as exportações SSR do Svelte, que configuram todos os eventos de ciclo de vida para não executarem nenhuma operação.
Uma solução é configurar o Vite para usar resoluções de navegador nos testes.
import {svelte} from '@sveltejs/vite-plugin-svelte'
import {defineConfig} from 'vite'
export default defineConfig(({mode}) => ({
plugins: [svelte()],
resolve: {
// The default would be [ 'svelte', 'node' ]
// as set by vite-plugin-svelte and vitest.
// This sets [ 'browser', 'svelte', 'node' ]
conditions: mode === 'test' ? ['browser'] : [],
},
test: {
environment: 'jsdom',
},
}))
Veja mais detalhes no issue 222 do svelte-testing-library.
Como testar upload de arquivos?
Use o utilitário upload do @testing-library/user-event em vez do
fireEvent. Ele funciona bem tanto no jsdom quanto no happy-dom.
test('upload file', async () => {
const user = userEvent.setup()
render(Uploader)
const file = new File(['hello'], 'hello.png', {type: 'image/png'})
const input = screen.getByLabelText(/upload file/i)
await user.upload(input, file)
expect(input.files[0]).toBe(file)
expect(input.files.item(0)).toBe(file)
expect(input.files).toHaveLength(1)
})
Por que os [eventos de transição][] não estão sendo executados?
A implementação do requestAnimationFrame no jsdom pode ser
inconsistente no Vitest. Para contornar isso, você pode:
Migrar para o happy-dom, se possível, que não apresenta os mesmos problemas
Substituir a implementação do
requestAnimationFrame
beforeEach(() => {
const raf = fn => setTimeout(() => fn(new Date()), 16)
vi.stubGlobal('requestAnimationFrame', raf)
})
// Alternatively, set `unstubGlobals: true` in vitest.config.js
afterEach(() => {
vi.unstubAllGlobals()
})
Veja mais detalhes no issue 206 do svelte-testing-library.