Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TDD com Javascript

TDD com Javascript

Palestra sobre TDD com Javascript na trilha Web University do TDC2013 Floripa

Breno Ferreira

May 27, 2013
Tweet

More Decks by Breno Ferreira

Other Decks in Technology

Transcript

  1. Testar é necessário Não escrever testes é como um cirurgião

    que não lava as mãos antes de uma operação | Robert “Uncle Bob” Martin
  2. Mas afina, o que são testes? • Código que executa

    outro código • Verifica a exatidão de pressupostos • Caso esses pressupostos estejam corretos, o teste passa, senão, falha
  3. Vantagens • Prover feedback • Tendem a melhorar o design

    da aplicação • Contribui para manutenção • Documentação executável do seu código
  4. #Fatos • Se está dificil de testar, voce possivelmente está

    fazendo algo errado • Testes ruins são piores que nenhum teste • Saber o que testar, no começo, é dificil
  5. describe(‘Todos’, function(){ it(‘TodosView deve iniciar com lista vazia’, function(){ var

    view = new TodosView(); expect(view.todos.length).toBe(0); }); });
  6. it('cria todo com nome passado por param', function(){ var view

    = new TodosView(); var nomeTodo = 'nova todo'; view.criarTodo(nomeTodo); expect(view.todos[0].nome).toBe(nomeTodo); });
  7. Jasmine-jQuery it('renderiza lista de todos', function(){ var listaTodos = ['tarefa1',

    'tarefa2', 'tarefa3']; var view = new TodosView(tarefas); expect($('li:first')).toHaveText('tarefa1') });
  8. it('salva todos', function(){ var collection = new TodosCollection( ['tarefa1', 'tarefa2',

    'tarefa3']; ); spyOn(collection, 'save'); var view = new TodosView(collection); view.salvar(); expect($('#resultado')).toHaveText('Todos salvas'); });
  9. it('salva todos chama metodo save', function(){ var collection = new

    TodosCollection( ['tarefa1', 'tarefa2', 'tarefa3']; ); spyOn(collection, 'save'); var view = new TodosView(collection); view.salvar(); expect(collection.save).toHaveBeenCalled(); });
  10. it('carrega todos do servidor', function(){ var collection = new TodosCollection();

    var view = new TodosView(collection); view.listar(); server.requests[0].respond( 200, { "Content-Type": "application/json" }, JSON.stringify(['tarefa1', 'tarefa2']); ); expect(view.todos[0].nome).toBe('tarefa1'); });