1up4developers logo

1up4developers

Nadando contra o Waterfall. tail -f /mind/realworld >> /blog

Teste De Integração Com Rspec 1.x E Capybara Na Sua App Rails

| | Comments


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 !

Comments