Pular para o conteúdo principal

Testes parametrizados

Testes parametrizados permite que você execute a mesma lógica de teste com diferentes entradas e resultados esperados. Isso ajuda a testar em vários cenários sem escrever testes repetitivos.

Por exemplo:

import { assert, test } from 'poku';

const casosDeTeste = [
{
esperado: true,
entrada: { name: 'Alice', role: 'admin' },
casoDeTeste: 'é admin',
},
{
esperado: false,
entrada: { name: 'Bob', role: 'user' },
casoDeTeste: 'não é admin',
},
];

const isAdmin = (user) => user.role === 'admin';

for (const { esperado, entrada, casoDeTeste } of casosDeTeste) {
test(casoDeTeste, () => {
const atual = isAdmin(entrada);

assert.strictEqual(atual, esperado);
});
}

Usando promesas

Lidando com operações assíncronas sequencialmente dentro de testes parametrizados usando promesas:

import { assert, test } from 'poku';

const casosDeTeste = [
{
esperado: true,
entrada: { name: 'Alice', role: 'admin' },
casoDeTeste: 'é admin',
},
{
esperado: false,
entrada: { name: 'Bob', role: 'user' },
casoDeTeste: 'não é admin',
},
];

const isAdmin = (user) => Promise.resolve(user.role === 'admin');

for (const { esperado, entrada, casoDeTeste } of casosDeTeste) {
await test(casoDeTeste, async () => {
const atual = await isAdmin(entrada);

assert.strictEqual(atual, esperado);
});
}
dica

Para executar operações assíncronas em paralelo, simplesmente remova await de test ou it.


info

Esses exemplos foram baseados nesse comentário.