Tarsis Azevedo

  • Aleatório
  • Arquivo
  • RSS
  • Ask me anything

Testes em Javascript - Jasmine

Tweet

Testes automatizados emergiram como uma das boas praticas da engenharia de software, e seus resultados sao comprovadamente eficazes.

Eu utilizo bastante essas tecnicas quando programo em python/django com ferramentas como o splinter, unittest entre outras. Porem quando programava em javacript, eu sempre senti falta desses testes automatizados.

E o Jasmine?

tl;dr - Jasmine is a behavior-driven development framework for testing your JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.

Em setembro do ano passado (2011), comecei a trabalhar no projeto de cobertura de eventos na globo.com. E tinhamos como desafio principal, atualizar uma pagina em tempo real via streaming com fotos, videos e textos. Pra isso os componentes da pagina teriam que interagir muito, recebendo e tratando os dados enviados do streaming. Usamos muito js com o framework mootools, e pra testar usamos o jasmine, o que nos proporcionou uma segurança e qualidade de codigo excelentes!

Agora chega de falar!

Show me the code

Pra começar, vc descreve um cenario que vai testar.

Como exemplo, vamos fazer um fizzbuzz

describe("Fizz Buzz", function(){
    it("numero igual a tres deve retornar fizz", function(){
        expect(fizzbuzz(3)).toEqual("fizz");
    });
});

Depois de escrever o teste, a gente escreve um codigo pra passar:

var fizzbuzz = function(numero) {
    return "fizz";
}

Agora mais um cenario:

it("numero igual a cinco, deve retornar buzz",function() {
    expect(fizzbuzz(5)).toEqual("buzz");
});

mais um pouco de codigo:

var fizzbuzz = function(numero) {
    if (numero === 3) {
        return "fizz";
    }
    return "buzz";
};

Bom ai vcs podem continuar a brincar e terminar o codigo.

E pra rodar?

Bom vc pode carregar os scripts(download aqui) do jasmine numa pagina html estatica e por ultimo carregar o seu teste. Um exemplo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Jasmine Test Runner</title>
        <link rel="stylesheet" type="text/css" href="lib/jasmine-1.0.2/jasmine.css">
        <script type="text/javascript" src="lib/jasmine-1.1.0/jasmine.js"></script>
        <script type="text/javascript" src="lib/jasmine-1.1.0/jasmine-html.js"></script>

        <!-- include source files here... -->
        <script type="text/javascript" src="aquivo/que/voce/quer/testar.js"></script>


        <!-- include spec files here... -->
        <script type="text/javascript" src="arquivo/de/teste.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
            jasmine.getEnv().execute();
        </script>
    </body>
</html>

Se vc tem um projeto em ruby com rails, vc pode usar uma gem pra rodar os testes.

Se vc tem um projeto em python, pode usar o jasmine-test-runner, feito pelo cobrateam.

Se vc tem um projeto em outra linguagem, veja aqui como rodar o jasmine.

Entao é isso!

Até a proxima, []’s

    • #jasmine
    • #programming
    • #javascript
    • #tdd
    • #bdd
  • Há 1 ano
  • 13
  • Comments
  • Link permanente
  • Share
    Tweet

13 Notes/ Hide

  1. nerddev reblogou esta postagem de tarsisazevedo
  2. together12up gostou desta postagem
  3. tarsisazevedo publicou esta postagem

Comentários recentes

Comentários do blog desenvolvidos por Disqus
← Anterior • Próxima →

Sobre

Avatar Um blog sobre desenvolvimento e tudo mais.

Online

  • @tarsisazevedo on Twitter
  • Facebook Profile
  • Linkedin Profile
  • tarsis on github
  • RSS
  • Aleatório
  • Arquivo
  • Ask me anything
  • Celular

Effector Theme by Carlo Franco.

Desenvolvido por Tumblr