Teste sua aplicação com RSpec
Criado por Clemens Helm, @clemenshelm e Floor Drees, @floordrees
Traduzido por Marina Limeira, @marinalimeira_
RSpec é um framework para testes em Ruby, que descreve o comportamento da nossa aplicação em uma sintaxe que não se parece muito com Ruby. Ele irá mostrar o resultado dos testes no seu terminal.
COACH: Fale sobre testes e Desenvolvimento Guiado por Comportamento (Behavior Driven Development).
Instale o RSpec
Para quem está iniciando, vamos instalar o RSpec e todas suas dependências.
gem install rspec
ou então, adicione ele ao seu Gemfile
gem 'rspec'
Então a gente pode chamar
rspec --init
no diretório do nosso projeto. Isso irá criar spec_helper.rb
no diretório spec, e o arquivo .rspec
.
Rubystas frequentemente utilizam as palavras ‘teste’ e ‘especificação’ da mesma maneira, e é por isso que você irá armazenar seus testes no diretório ‘specs’. Salve seus testes como idea_spec.rb
(<nome_do_spec>_spec.rb
).
Dentro desse novo arquivo, escreva:
require "spec_helper"
require "idea"
Depois, vamos descrever uma das nossas especificações
describe Idea do
it "possui um título" # seus exemplos (testes) vão aqui
end
No terminal rode
rspec spec/lib/idea_spec.rb
que irá dizer que seu teste está pendente e ainda não foi implementado.
COACH: Fale sobre pesquisar no google a saida do terminal.
Vamos fazer algo sobre isso!
describe Idea do
it "possui um título" do
idea = Idea.new # criando uma nova instância de Idea
idea.title.should be_true # esse é o resultado esperado do nosso teste
end
end
deve te dar uma saida mais satisfatória.
Refatorando
Você pode também escrever:
describe Idea do
its(:title) { should be_true }
end
o que parece muito melhor, mas existe muita mágica envolvida. Por agora provavelmente é bom saber que a gente pode ‘refatorar’ estes enormes blocos de código em coisas menores, com um pouco mais de experiência.
COACH: Fale sobre refatoramento.
Marcando os testes como a fazer
Sim! Listas de coisas a fazer. Maravilhoso. Uma boa funcionalidade do RSpec é a possibilidade de marcar alguns testes como pendente.
Retirando o do
e o end
do exemplo no corpo do texte, como em
it "possui um título"
irá marcar os testes como pendentes. Para aplicações maiores, quando você quiser pular um teste por vez, você pode também adicionar um x
na frente do exemplo, fazendo ele parecer como
describe Idea do
xit "possui um título" do
end
end
ou utilizar a palavra pending
no seu exemplo.
Desenvolvimento Guiado por Comportamento (BDD)
Normalmente nós iremos pensar sobre BDD como uma maneira diferente de fazer nossa aplicação. Pense sobre a aplicação que queremos construir, então iremos escrever as nossas expectativas (os nossos testes) e então começar a construir a aplicação passo a passo, com as especificações em mente.
Escrevemos primeiro
describe Idea do
it "possui um título"
idea = Idea.new
idea.title.should be_true
# uma alternativa: idea.title.should == true
end
end
e então crie um arquivo chamado idea.rb
introduzindo a classe Idea
class Idea
attr_accessor :title
end
rodando rspec spec/lib/idea_spec.rb
no seu terminal antes de ter implementado a classe irá retornar um erro. Felizmente, erros não são algo para se temer. Os erros do RSpec na verdade te ajudam a escrever o código (necessário)! Você sempre irá se preocupar em escrever código suficiente apenas para o teste passar, evitando fazer algo que provavelmente você não irá utilizar depois.
Tente escrever testes para os outros guias para checar que você está implementando TODAS as coisas certas (e necessárias).
describe Attendee do
it "testa tudo"
end
Apenas dizendo.
Feliz testes!