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.
informação
Esses exemplos foram baseados nesse comentário.