Skip to content

rcoproc/testes_tdd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Testes TDD com Rspec

Exemplo dos testes TDD da Udemy, Curso de TDD, rspec e capybara do Jackson Pires. Exemplos completos, 115 aulas, 15:37:08.

  • Garantir a qualidade do software

  • Segurança e facilidade na manutenção

  • Melhor design de software

  • Documentação técnica

Pirâmide de Testes

Premissas básicas de testes:

  • Testes devem ser confiáveis

  • Testes devem ser fáceis de escrever

  • Teste devem ser fáceis de entender hoje e no futuro

  • Não estamos focados em velocidade!

Padrão dos testes em 4 fases:

  • Setup: Quando você coloca o SUT (system under test, o objeto sendo testado) no estado necessário para o teste;

  • Exercise: Quando você interage com o SUT;

  • Verify: Quando você verifica o comportamento esperado;

  • Teardown: Quando você coloca o sistema no estado em que ele estava antes do teste ser executado. Rspec faz isto automaticamente.

BetterSpecs

http://www.betterspecs.org/br/

Rodando todos os testes

rspec spec

Definições

LET e LET! Exemplo

  • Let: Quando você precisa atribuir uma variável, ao invés de usar um bloco before para criar uma variável de instância, use let. Ao usar let, a variável é carregada apenas quando ela é utilizada pela primeira vez no teste e fica na cache até o teste em questão terminar.

  • Let!: Você pode usar let! Para forçar a invocação do método/helper antes de cada teste.

One-Liner Sintax - Exemplo

  • expect(subject) == is_expected

“Descrições implícitas” it { … }

it { is_expected.to cover(2) }
it { is_expected.to cover(2, 5) }

Agregando Falhas - Exemplo

config.define_derived_metadata do |meta|
   meta[:aggregate_failures] = true
end

it 'teste', :aggregate_failures do
    ...code...
end

Customizando Matchers - Exemplo

RSpec::Matchers.define :be_a_multiple_of do |expected|
    # expected == 3
    # actual == subject == 18
    match do |actual|
        actual % expected == 0
    end

    failure_message do |actual|
        "expected that #{actual} would be a multiple of #{expected}"
    end

    description do
        "be multiple of #{expected}"
    end
end
config.before(:suite) do
    puts "antes de toda a suíte de testes"
end
  • before(:all) # antes de todos os testes

  • before(:context)

  • after(:all) # depois de todos os testes

  • after(:context)

  • before(:suite) # antes de toda a suite de testes

  • after (:suite) # depois de toda a suite de testes

  • before(:each) # antes de cada teste

  • before(:example)

  • after(:each) # depois de cada teste

  • after(:example)

Shared Examples - Exemplo

include_examples "name"
it_behaves_like "name"
it_should_behave_like "name"

DOUBLE - Exemplo

  • Dublê de Teste é um termo genérico para qualquer objeto falso, utilizado no lugar de um objeto real, para propósitos de testes.

STUB - Exemplo

  • Um stub nada mais é do que forçar uma resposta especíica para um determinado método de um objeto colaborador. "Stubs são para a fase de Stup, são usados para substituir estados".

MOCKS - Exemplo

  • "Mocks são para a fase e Verify, sendo usados para testar comportamentos"

About

Exemplo dos testes TDD da Udemy, Curso de TDD, rspec e capybara do Jackson Pires

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages