Este não é daqueles posts que explicam o que é rspec, testes, diferenças entre teste funcional, integração e etc. Este post é só uma rapidinha, pra quem já conhece rspec e capybara.
A documentação do Capybara é boa, mas deixa a desejar nas instruções de como integrá-lo somente com rspec. Com a ajuda do George Guimarães da Plataforma, cheguei num passo a passo mega simples.
No config/environments/test.rb declare:
config.gem "rspec", :version => "= 1.3.0", :lib => false
config.gem "rspec-rails", :version => "= 1.3.2", :lib => false
config.gem "capybara", :version => "= 0.3.9", :lib => false
No spec/spec_helper.rb coloque:
require 'capybara/rails'
[...]
Spec::Runner.configure do |config|
[...]
config.include(Capybara, :type => :integration)
end
Pronto! Isto é o suficiente para utilizar o Capybara nos testes de integração. Para finalizar, você pode montar um teste simples de validação. Por exemplo:
Crie spec/integration/site_spec.rb e coloque:
require 'spec_helper'
describe "Site sample" do
context "root" do
before do
visit root_url
save_and_open_page
end
it "should have Hello" do
page.should have_content("Hello")
end
end
end
Para executar somente os testes de integração:
rake spec:integration
have_content e um hot tip que pode te salvar muitas horas !
Caso aconteça o erro:
undefined method `have_content' for #<ActionController::Integration::Session:0xb618ad10>
Graças a esta mensagem Can’t make matchers work with cucumber and rails 2.3.2, descobri que o have_content não funciona com o rails 2.3.2, eu resolvi o problema fazendo um upgrade para a última versão do rails. #ficaadica
Dúvidas, melhorias, sugestões e elogios são sempre bem vindos !