quinta-feira, 22 de maio de 2014

Já testou seu código Javascript? Jasmine!

Fala aí galera, tudo tranquilo?

Você certamente já brincou ou trabalhou com Javascript, mas já testou o que você fez? E saiba, não estou falando de testes manuais. hehe

Em algum momento dos meus atuais exercícios com o Jonas aqui na Lambda, ele me apresentou o Jasmine que é um framework de teste para Javascript, que rola seguindo uma técnica de desenvolvimento Ágil, chamada BDD(Behavior Driven Development), mas como não é o foco, não entrarei em maiores detalhes.

Jasmine

Vamos diretamente a prática, baixe o arquivo do Jasmine no Github deles.
Abra esse arquivo, que é um diretório, abra a pasta spec e crie um novo arquivo "testando-soma.js". Feito isso, vamos abrir o arquivo e criar uma função de soma em Javascript:

 function soma(x, y){
    return x + y;
}

Agora vamos escrever um teste para essa função básica:
 
describe("Dado a soma de 2 e 1:", function(){
    it("O retorno deve ser 3.", function(){
        var resultado = soma(2, 1);
        expect(resultado).toBe(3);
    })
}

Entendendo Basicamente na primeira linha describe, nós descrevemos nossa função, na segunda linha it definimos o que deveria ser o resuldado. Já ali na quarta linha expect nós inspecionamos a variável resultado e com o toBe(), veja como Ser. Ou seja, o resultado esperado deve ser 3.
Agora teste você mesmo, abra o arquivo SpecRunner.html, com o seu navegador, e verá o resultado do seu teste. Mas antes, já que você não vai ver nenhum resultado do seu teste, e o motivo é simples, com o seu editor padrão, abra o arquivo SpecRunner.html e inclua a linha:

 <script type="text/javascript" src="spec/testando-soma.js"></script>

Feito isso, nosso arquivo javascript, escrito acima, será carregado e poderá passar pelos testes.
Bom, agora vamos escrever um teste mais legal certo?
Vamos reverter uma string, então bora escrever o teste primeiro:

 describe("Dado a string 'Asdrubal' a reversão:", function(){
    it("O retorno deve ser laburdsA.", function(){
        expect(reverse("Asdrubal").toBe("laburdsA");
    }); 

});

Agora vamos escrever a função:

 function reverse(texto){
    return texto.split("").reverse().join(""); 
}

No código acima, fizemos um split para pegar cada letra e transformar num array de char, depois usamos o reverse para reverter esse array e, por fim, o join para montar novamente uma string, coisa básica. Mas já é um teste mais legal :). Não deixe de conferir a documentação e a Introdução, mas é claro, não se prenda ao Jasmine, apenas a idéia de testar seu código já é sensacional, ou não!

Dica para os JS testers: Mocha.

Valeu Galera!