Pular para o conteúdo principal
Versão: v3.x.x (Release Candidate)

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.

dica

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)


nota

Se você encontrar algum erro de digitação, sinta-se à vontade para abrir um Pull Request corrigindo-o.