Teste sua aplicação com RSpec
Criado por Clemens Helm, @clemenshelm e Floor Drees, @floordrees
RSpec é um framework de testes de Ruby que descreve o comportamento da sua aplicação em uma sintaxe que não se parece muito com a de Ruby. Exibe os resultados do teste no seu terminal para que você também teste suas habilidades de leitura.(trocadinho intencional).
COACH: Fale sobre testes e Behavior-Driven Development.
Instale o Rspec
Para começar, vamos instalar o RSpec e todas as suas dependências.
gem install rspec
E aí executamos
rspec --init
no diretório do nosso projeto. Isso cria o arquivo spec_helper.rb
na pasta spec e o arquivo de configuração .rspec
.
Rubistas costumam usar os termos ‘teste’ e ‘especificação’ como sinônimos e é por essa razão que você armazenarám seu testes na pasta ‘spec’. Salve o seu teste como idea_spec.rb
(<name_of_spec>_spec.rb
).
Dentro do novo arquivo, escreva:
require "spec_helper"
require "idea"
Em seguida, vamos escrever uma das nossas especificações
describe Idea do
it "has a title" # your examples (tests) go here
end
No seu terminal, execute
rspec spec/lib/idea_spec.rb
que irá retornar que seu teste está pendente já que este ainda não foi implementado.
COACH: Fale sobre como pesquisar saídas do terminal
Vamos fazer algo a respeito então!
describe Idea do
it "has a title" do # yep, you can totally use 'it'
idea = Idea.new # creating a new idea 'instance'
idea.title.should be_true # this is our expectation
end
end
Isso deve mostrar um resultado mais satisfatório.
Refatoração
Você também pode escrever
describe Idea do
its(:title) { should be_true }
end
que tem a aparência bem melhor do que o exemplo anterior, mas ainda existe muita magia envolvida nesse código.
Por enquanto é interessante saber que nós podemos ‘refatorar’ aqueles longos trechos de código em partes menores adquirindo pouco de mais experiência.
COACH: Fale um pouco mais sobre refatoração
Marcando os testes pendentes
Uhu! Uma funcionalidade marota do RSpec é a habilidade de se marcar certos testes como pendentes.
Ao se retirar o do
e end
do código do exemplo, da seguinte forma
it "has a title"
você marcará um teste como pendente. Para aplicações maiores, onde você quer atacar um teste por vez, você também pode adicionar a letra x
no começo do teste:
describe Idea do
xit "has a title" do
end
ou usando o termo pending
no seu teste.
Behavior-Driven Development
Normalmente escrevemos esse tipo de teste de uma maneira um pouco diferente. Pensando na aplicação que queremos construir, vamos escrever nossas expectativas e então começar a construir os testes passo a passo, com as especificações em mente.
Primeiramente vamos escrever
describe Idea do
it "has a title"
idea = Idea.new
idea.title.should be_true
# or, alternatively: idea.title.should == true
end
end
e aí então criar um arquivo chamado idea.rb
relativo à classe Idea.
class Idea
attr_accessor :title
end
Se você executar o comando rspec spec/lib/idea_spec.rb
no seu terminal, vai ocorrer um erro. Você não deve sentir medo de erros, eles são nossos amigos. :) Os erros do RSpec vão te ajudar a escrever o código necessário para implementar os testes!
Tente escrever testes para os demais items desse tutorial para verificar se você está conseguindo implementar as coisas de maneira correta.
describe Attendee do
it "tests everything"
end
Só um toque.
Seja feliz testando!