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 !
massa abraco
http://maironbrasil.wordpress.com/2010/12/10/o-comovente-guia-de-ruby-do-why-em-pdf/
vamos que vamos
http://maironbrasil.wordpress.com/2010/12/14/parana-on-rails-cidades-sede/
abraco