Pular para o conteúdo principal
Versão: v3.0.2

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)


observação

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