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.