Teste sua aplicação com RSpec
Criado por Clemens Helm, @clemenshelm e Floor Drees, @floordrees
Traduzido por Marina Limeira, @marinalimeira_
Atualizado por Ana Schwendler, @anaschwendler
Esse guia assume que você já criou a app RailsGirls como mostrado no tutorial para criação da app Rails Girls.
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, então você testará suas habilidades de leitura também.
INSTRUTOR(A): Fale sobre testes e Desenvolvimento Guiado por Comportamento (Behavior Driven Development).
1. Adicione a gem RSpec
Abra o seu Gemfile
e adicione esta linha aos grupos:development
e :test
, acima da tag final:
group :development, :test do
...
gem 'rspec-rails', '~> 3.8'
end
e rode
bundle install
para instalar a gem.
Em seguida, rode o comando abaixo para gerar as pastas do rspec:
rails generate rspec:install
Isso adiciona os seguintes arquivos usados para configuração:
.rspec
spec/spec_helper.rb
spec/rails_helper.rb
2. Crie seu primeiro teste!
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’. Para fazer isso, execute os seguintes passos:
Vamos criar um teste para o nosso modelo idea
, para fazer isso de maneira elegante em Rails:
- Crie uma pasta
models
na sua pastaspec
, rodando no terminal:
mkdir spec/models
- Salve seu teste como
idea_spec.rb
(<nome_do_modelo> _spec.rb
).
Dentro desse novo arquivo, em nosso primeiro teste, queremos garantir que uma ideia tenha um nome. Para fazer isso, vamos descrever uma de nossas especificações:
require "rails_helper"
RSpec.describe Idea, type: :model do
it "tem um nome" do
skip
end
end
No seu terminal rode:
rspec spec/models/idea_spec.rb
qual será o resultado que seu teste está pendente, pois ainda não está implementado.
INSTRUTOR(A): Fale sobre ‘googlear’ a saída do terminal
Vamos fazer algo sobre isso!
require "rails_helper"
RSpec.describe Idea, type: :model do
it "tem um nome" do # sim, você pode user 'it' (lê-se como 'isso tem um nome')
idea = Idea.create!(name: "Minha ideia maravilhosa") # criando uma nova ideia
expect(idea.name).to eq("Minha ideia maravilhosa") # esperamos que seja salvo com o nome correto
end
end
deve gerar uma saída mais adequada.
3. Refatorando
Você pode criar duas ideias, para ter certeza de que nosso projeto está criando ideias da maneira certa:
require "rails_helper"
RSpec.describe Idea, type: :model do
it "tem um nome" do # sim, você pode user 'it' (lê-se como 'isso tem um nome')
idea = Idea.create!(name: "Minha ideia maravilhosa") # sim, você pode user 'it' (lê-se como 'isso tem um nome')
second_idea = Idea.create!(name: "Minha segunda ideia maravilhosa") # criando uma nova ideia
expect(second_idea.name).to eq("Minha segunda ideia maravilhosa") # esperamos que a segunda ideia seja salva corretamente
end
end
que testa mais coisas.
INSTRUTOR(A): Fale um pouco sobre a refatoração.
4. 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. Em outras palavras, primeiro você pensa sobre o que a implementação deve realizar, em seguida, escreve um teste para verificar se está funcionando.
Vamos criar nosso próximo teste, adicionando as linhas abaixo ao nosso idea_spec.rb
it "tem uma descricao"
retornará que o teste está pendente.
Você consegue completar este teste? Você consegue pensar em outros testes?
5. Desenvolvimento Guiado por Comportamento (BDD)
INSTRUTOR(A): Fale um pouco sobre Desenvolvimento Guiado por Comportamento (BDD).
Agora você pode criar mais testes sozinho. Sinta-se à vontade para falar com o seu instrutor(a) para fazer isso ou maneiras de criar mais testes.
Feliz testes!
Outros Guias
- Handy cheatsheet for Ruby, Rails, console etc.
- Guia 1: Tutorial de Instalação para Rails Girls
- Guia 2: Tutorial para criação da app Rails Girls
- Guia 3: Como enviar para o GitHub
- Guia 4: Colocando seu app online em…
- Guia 5: Funcionalidades de uma área de comentários para a app Rails Girls
- Guia 6: Adicione design à sua aplicação com HTML e CSS
- Guia 7: Thumbnails em listas de ideas
- Guia 8: Autenticação (para usuários) com Devise
- Guia 9: Adicionando Gravatar para a aplicação
- Guia 10: Melhorando seu design da sua aplicação com HTML e CSS
- Guia 11: Continuous Deployment
- Testando seu app com RSpec (Você está aqui!)
- CD with Travis-CI
- CD with Codeship
- Guia 12: Construindo um aplicativo de votação em Sinatra
- Guia 13: Construa um diário em Ruby on Rails
- Guia 14: Adicione back-end ao seu aplicativo (páginas de administração)
- Guia 15: Acesse explicações adicionais do app Rails Girls