Já se foram os tempos em que nós desenvolvedores testávamos as nossas aplicações na mão, íamos até um navegador, abrir de página por página e saíamos dando console.log em tudo para sabermos se aquilo estava realmente retornando o que esperávamos. E para os que ainda não conhecem, eu trouxe até vocês a apresentação de um ótimo testador unitário que vai mudar o seu jeito de desenvolver as suas aplicações. Hahahahaha! Vamos lá! :D
Introdução
O que é Jasmine?
Jasmine é um framework de desenvolvimento orientado a comportamento para testes de códigos em JavaScript. Não depende de nenhum outro framework de JavaScript. E o melhor de tudo é que ele possuí uma sintaxe limpa e óbvia, então você poderá escrever testes que sejam limpos e fáceis de entender por qualquer outro desenvolvedor.
Let’s type some code
O que é uma suíte de testes?
Uma suíte de testes é nada mais nada menos que uma suíte em que você colocará todos os testes pertencentes a essa suíte dentro dela. É mais estético do que funcional, digamos assim. Exemplo: Eu tenho a suíte de testes chamada ‘application module’ e dentro dela eu tenho vários testes que irão testar os meu controladores, e outras funcionalidades do módulo application .
Algumas das funções que o Jasmine me disponibiliza executar
describe (describeName, function)
Cria uma nova suíte de testes.
it (testDescription, function)
Cria um novo teste. É dentro dos it’s em que os testes realmente acontecem.
Padrões
É importante que você mantenha um padrão ao determinar o testDescription, para isso você vai precisar de um pequeno conhecimento no idioma inglês.
A função it se chama assim por um motivo bem simples, ela serve para que você possa determinar um teste de maneira mais limpa e próxima ao idioma, para que qualquer um que leia consiga entender bem o que você escreveu, ou seja, quando eu for determinar um novo teste eu não vou determiná-lo assim it(‘application module: version test’, fn) , eu vou escrever o meu testDescription da seguinte maneira: it(‘should have a version’, fn) , ou seja, eu literalmente completei o que a função ‘começou falando’: ‘it should have a version‘, no português ‘isto deve ter uma versão‘. Deu pra entender bem como deve ser este padrão?
Notas
Um it, não pode ser chamado fora de uma suíte de testes.
Exemplo:describe(‘application module’, function () {
it(‘should have a version’, function () {
// tests should happen here
});
});
ERRADO:describe(‘application module’, function () {
// ???
});
it(‘should have a version’, function () {
// tests should happen here
});
beforeEach (function)
Esta função será resolvida antes de cada teste dentro de uma suíte começar a ser executado.
afterEach (function)
Esta função será resolvida depois de cada teste dentro de uma suíte terminar de ser executado.
expect (value)
Deve estar sempre dentro de um teste, ela é a última parte de um teste, esta função serve para que você possa verificar se value é igual ao valor esperado, é de fato o que chamamos de teste. Em value exatamente como o próprio parâmetro sugere, deve conter um valor, seja lá qual ele for, a partir desta função, será retornada uma outra função e você poderá utilizá-la de várias formas para finalizar o teste.
- toBe (value) - Verifica se value (definido com o expect) é igual a value (definido com toBe)
- toEqual (value) - Verifica se value (definido com o expect) é igual a value (definido com toEqual)
- toBeDefined() - Verifica se value foi definido.
- toMatch (match) - Executa uma expressão regular em value e retorna true caso encontre algo.
- toBeUndefined() - Verifica se value não foi definido.
Todas as funções acima podem ser usadas logo após um .not o que fará com que elas operem de maneira contrária. Exemplo:describe(‘application module’, function () {
it(‘should do something’, function () {
expect(true).not.toBe(false);
expect(true).toBe(true);
expect(true).not.toBeUndefined();
});
});
Bom, espero que tenham gostado. Até a próxima, e lembrem-se. SIGAM OS PADRÕES e deixem suas dúvidas abaixo, tentarei ao máximo ajudar a todos, um abraço! :)