Instalando RSpec e Capybara numa aplicação Rails
Já criamos nossa aplicação Rails, demos uma home customizada para ela, e até fizemos um deploy dela para o Heroku.Agora poderíamos já começar a criar umas features legais e fazer a coisa toda tomar forma, mas ainda precisamos configurar nossa parte de testes. Quando criamos nossa aplicação, acrescentamos -T para "pular" a parte de testes, lembra?
Fizemos isso porque ao invés de usar o suite de testes padrão do Rails, vamos usar o RSpec e o Capybara. Juntos eles nos permitirão não só testar nossas lógicas e classes, mas também o comportamento da nossa aplicação para o usuário. Estamos falando de TDD e BDD, duas abordagens que vamos usar durante todo o desenvolvimento da nossa aplicação. Clique nestes links e aprenda mais sobre estes conceitos. Prometo que vai valer a pena!
1 - Acrescente a gem 'rspec-rails' ao seu Gemfile
Esta é a gem do rspec já preparada para trabalhar dentro do Rails. Instalação, configuração, e uso ficam muito mais fáceis e práticos.gem 'rspec-rails'
Eu coloco essa gem no bloco :development, :test do Gemfile, porque ela não é necessária em produção.
2 - Rode o comando 'bundle install'
Quando rodamos bundle install, estamos pedindo para o Bundler instalar esta gem na nossa máquina e no nosso projeto.vivipoit ~/projects/sampope (master) > bundle install The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. Fetching gem metadata from https://rubygems.org/............ Fetching gem metadata from https://rubygems.org/. Resolving dependencies... [...] Fetching rspec-support 3.9.3 Installing rspec-support 3.9.3 Fetching rspec-core 3.9.2 Installing rspec-core 3.9.2 [...] Bundle complete! 15 Gemfile dependencies, 72 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed.
3 - Rode o comando 'rails generate rspec:install'
Este comando pede para que o Rails instale o RSpec na nossa aplicação, criando automaticamente alguns arquivos de configuração que vamos precisar. Aprenderemos mais sobre eles no futuro.vivipoit ~/projects/sampope (master) > rails generate rspec:install Running via Spring preloader in process 1585 create .rspec create spec create spec/spec_helper.rb create spec/rails_helper.rb
Ao terminar este passo, o RSpec em si já estará instalado. Para ter certeza, basta rodar o comando rspec, que chama os arquivos de testes e roda cada um. No nosso caso, não temos nenhum ainda, mas se a instalação estiver correta, veremos a linha 0 examples, 0 failures.
4 - Acrescente a gem 'capybara' ao seu Gemfile
Agora vamos instalar a gem do Capybara em si, que vai nos ajudar a escrever testes ainda mais práticos e humanizados.
gem 'capybara'
5 - Novamente rode o comando 'bundle install'
Toda vez que instalamos uma nova gem, precisamos rodar o bundle install. Quando estamos instalando mais de uma gem (como neste caso), é possível colocar as duas de uma vez no Gemfile e rodar bundle install uma vez só. Aqui eu separei a rspec-rails e a capybara por razões didáticas.
vivipoit ~/projects/sampope (master) > bundle install The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. [...] Bundle complete! 16 Gemfile dependencies, 77 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed.
6 - Acrescente a linha require 'capybara/rails' no seu arquivo rails_helper.rb
Dentro do diretório spec, tem um arquivo chamado rails_helper.rb. Este diretório e este arquivo foram criados automaticamente quando rodamos o comando rails generate rspec:install no passo 3.Quando abrir o arquivo, você verá que no início ele já tem alguns "requires". Vamos colocar a linha require 'capybara/rails' logo após o último require:
# spec/rails_helper.rb # This file is copied to spec/ when you run 'rails generate rspec:install' require 'spec_helper' ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../config/environment', __dir__) # Prevent database truncation if the environment is production abort("The Rails environment is running in production mode!") if Rails.env.production? require 'rspec/rails' # Add additional requires below this line. Rails is not loaded until this point! require 'capybara/rails'

Nenhum comentário:
Postar um comentário