Neil Carvalho

Desenvolvimento, lifehacks e outras coisas


Jasmine: Javascript com BDD

29 May 2012

Esse é mais um post da série não faço a mínima ideia, onde na verdade faço alguma ideia (ao menos do que se trata) mas nunca parei pra estudar a fundo. Até o final do primeiro parágrafo, não fiz nenhuma espécie de pesquisa ou digitei uma linha de code example com Jasmine. E é assim que é pra ser mesmo.

Jasmine é uma ferramenta de BDD para Javascript. Essa é uma linguagem bem filha da puta e chata quando tudo parece bem, mas absolutamente necessária para qualquer coisa internética mais interativa. Não, não conto com coisas pré-históricas como applets Java ou Flash.

Pra quem é familiar com RSpec, Jasmine é moleza. it, describe, beforeEach, spies, tá tudo lá. Só que com a sintaxe do Javascript, mas beleza, tá perdoado.

Partindo daquele exemplo babaquinha da calculadora ultra simples que soma dois números, começaríamos com o seguinte spec:

describe('Calculator', function(){
  it('sums 1+1', function(){
    var calculator = new Calculator();
    expect(calculator.sum(1,1)).toBe(2);
  });
});

Que retorna o seguinte erro:

ReferenceError: Can't find variable: Calculator

Para resolver esse erro, definimos Calculator:

function Calculator() {
}

Que faz o erro alterar para

TypeError: 'undefined' is not a function (evaluating 'calculator.sum(1,1)')

Oops, faltou definir sum (com o código mais simples que dá pra fazer):

Calculator.prototype.sum = function(num1, num2) {
  return 2;
}

Yey!

Passing 1 spec

Uma cheat sheet bem mais detalhada pode ser vista aqui.

comments powered by Disqus