Asserções
☑️ O que são Asserções?
Nos testes, asserções são usadas para garantir que o resultado seja realmente o que esperamos.
Cada testador pode ter um jeito diferente de fazer isso, mas o final costuma ser o mesmo:
- Se nossa verificação (asserção) não for exatamente como esperado, o teste irá disparar um erro naquela asserção.
Na Prática
Entendendo condições e asserç ões
Em JavaScript, podemos comparar usando ===
, certo?
Se a condição for válida, ela continua, caso contrário tentará outra condição, se existir. Por exemplo:
const atual = 'maçã';
const esperado = 'banana';
if (atual === esperado) {
console.log('As frutas são iguais');
} else {
console.log('As frutas são diferentes');
}
console.log(
'Será executado após as condições abaixo, independente do resultado'
);
- ☁ ️ Com as asserções, imagine que se a condição não for válida, o script é interrompido imediatamente com um erro.
Vamos criar um arquivo assertion-error.test.mjs
e tentar o mesmo, mas como uma asserção de teste:
import { assert } from 'poku';
const atual = 'maçã';
const esperado = 'banana';
assert.strictEqual(atual, esperado, 'Espera pelas mesmas frutas');
// Após o erro de asserção, o script irá encerrar o processo com um erro ❌
console.log('Ninguém me nota 😔');
E agora, o arquivo assertion-success.test.mjs
:
import { assert } from 'poku';
const atual = 'maçã';
const esperado = 'maçã';
assert.strictEqual(atual, esperado, 'Espera pelas mesmas frutas');
// Após o sucesso da asserção, o script continuará normalmente ✅
console.log('Estou aqui 😌');
Nossos testes foram criados:
- Um causará um erro e o outro será concluído com sucesso.
Para executar todos os testes de uma vez, basta executar o comando npx poku --debug
no terminal e ver a mágica acontecer:
npx poku --debug
Por que
--debug
?Para os iniciantes, é sempre recomendado usar essa opção para ver todas as saídas no terminal. Sem essa opção, nenhum
console.log
será exibido no terminal, por exemplo.
Conclusão
Em um teste real, nós não usaríamos valores óbvios/fictícios, testaríamos métodos reais e resultados que podem variar em nosso projeto, seja ele frontend ou backend.
Quando todos os testes passam, isso significa que nossa suíte passou com sucesso em todos os testes criados 🎉
Extra
Aqui está um passo a passo completo para aprender testes unitários na prática com o Poku, em Português (BR):
🇧🇷 Tutorial: Introduzindo Testes Unitários para Devs Iniciantes (JS)
Se você encontrar algum erro de digitação, sinta-se à vontade para abrir um Pull Request corrigindo-o.