O que é uma test fixture?
Uma test fixture é o estado fixo e conhecido, além dos dados, contra os quais um teste é executado, preparados antes do teste e limpos depois.
Testes precisam de um ponto de partida previsível. Uma fixture fornece isso: as linhas do banco de dados, arquivos, objetos ou configuração que um teste assume antes de começar. Ao construir o mesmo estado todas as vezes, as fixtures tornam os testes repetíveis e independentes, o que é a base de uma suíte confiável.
O que uma fixture inclui
Uma fixture pode ser tão pequena quanto um único objeto ou tão grande quanto um banco de dados populado. O ponto é que ela coloca o sistema em um estado conhecido para que o teste exercite o comportamento contra entradas previsíveis, e não contra o que quer que tenha sobrado de uma execução anterior.
Setup e teardown
As fixtures são criadas em uma fase de setup antes do teste e removidas em uma fase de teardown depois. O teardown importa tanto quanto o setup: deixar estado para trás pode permitir que um teste polua o próximo, produzindo falhas que dependem da ordem dos testes.
Um exemplo prático
Uma fixture por teste popula um usuário conhecido antes de cada teste e o limpa depois, para que cada teste comece a partir do mesmo estado limpo.
beforeEach(async () => {
await db.users.insert({ id: 1, name: "Ada" });
});
afterEach(async () => {
await db.users.clear();
});Bons hábitos com fixtures
- Mantenha as fixtures minimalistas para que a intenção do teste fique clara.
- Redefina o estado entre os testes para evitar dependência de ordem.
- Prefira construir fixtures em código em vez de despejos compartilhados gigantes.
- Torne as fixtures explícitas para que o leitor veja as pré-condições.
Fixtures e determinismo de CI
Fixtures limpas e um teardown confiável são o que permite que os testes rodem em qualquer ordem e em paralelo sem interferir uns nos outros. Em runners de CI isolados, um ambiente novo por execução reforça esse determinismo, para que um vazamento de fixture em um teste não quebre silenciosamente outro. O isolamento por job é uma das razões pelas quais os runners da Latchkey mantêm as suítes paralelas estáveis.
Principais conclusões
- Uma fixture é o estado conhecido e os dados contra os quais um teste é executado.
- O setup a constrói; o teardown a remove para evitar poluição entre testes.
- Fixtures limpas permitem testes independentes de ordem e seguros para execução em paralelo.