melhores práticas para testar aplicativos do backbone.js com o jasmine?

5

Recentemente, comecei a usar o jasmine para fazer testes de unidade javascript. amando isso até agora.

um dos projetos em que estou trabalhando é um plugin para o backbone.js. Como o backbone é uma estrutura de estilo mvc para javascript, muito do que ele faz é a manipulação de visualizações - normalmente por meio do jquery. meu plugin não é uma exceção a isso. Eu tenho várias coisas sendo manipuladas em elementos html, através de visões de backbone.

agora, eu estou fazendo o que pode ser uma coisa horrível para fazer isso valer a pena com jasmim. aqui está um exemplo de como eu estou colocando meus testes:

describe("conventionBindings", function(){
  beforeEach(function(){
    this.model = new AModel({name: "Some Name"});
    this.view = new AView({model: this.model});
    this.view.render();
  });

  afterEach(function(){
    this.view.close();
  });

  describe("... that thing it does ... ", function(){
    it("... stuff .... ", function(){
    });
  });
});

Os bits importantes aqui são beforeEach e afterEach. Perceba que estou chamando o método de renderização da minha visão e, em seguida, o método fechado da minha visão.

aqui está o que esses métodos fazem:

AView = Backbone.View.extend({
  render: function(){
    this.html = $("");
    $("body").append(this.html);
  },

  close: function(){
    this.html.remove();
  }
});

Estou especificamente adicionando este método "close" ao meu ponto de vista para os testes, porque se eu não o fizer, a página do jasmine que estou visualizando quando eu executar o servidor de teste do jasmine mostrará as entradas que eu ve acrescentado ao corpo da página.

então ... aqui estão minhas perguntas:

isso é algo horrível de se fazer? Eu deveria estar testando minhas visões e manipulações de elemento html de alguma forma além de acrescentar elementos ao corpo da página?

agora eu não tenho necessidade de executar esses testes em qualquer tipo de servidor de CI, mas se eu fizer isso, que tipo de problemas eu vou encontrar? Como posso escrever melhores testes de jasmim, para que eu possa testar o meu plugin de backbone em um servidor de CI, sabendo que o plugin tem que manipular elementos html durante o teste?

    
por Derick Bailey 25.07.2011 / 18:12
fonte

1 resposta

2

Eu encontrei este artigo um ótimo recurso para começar a testar o jasmim.

Testando as aplicações do Backbone com Jasmine e Sinon

Em seu artigo ele está adicionando elementos especificamente à página usando setFixtures. Então, um método semelhante e é o jeito que eu usei no passado. No que diz respeito às melhores práticas, podemos querer ver como os outros se sentem em relação a esse método. Não consigo pensar em outra maneira de executar a renderização sem colocá-la na página.

    
por 25.07.2011 / 18:24
fonte