what rails docs and rspec ruby-on-rails-3.2 capybara

rails - rspec and capybara



El parche de Capybara/RSpec ''have_css'' no funciona, pero has_css sí (1)

Por defecto, Capybara solo busca elementos "visibles". El elemento principal (y su elemento de título) realmente no se consideran visibles. Esto da como resultado que el elemento title se ignore en have_css.

Puede obligar a Capibara a considerar también elementos no visibles mediante la opción :visible => false .

expect(page).to have_css(''title'', :text => ''Todo'', :visible => false)

Sin embargo, sería más fácil usar el método have_title :

expect(page).to have_title(''Todo'')

En la aplicación Rails 3.2.14 con Ruby 2, utilizando rspec-rails 2.14.0 y capybara 2.1.0, la siguiente especificación de funciones está causando un error:

require ''spec_helper'' feature ''View the homepage'' do scenario ''user sees relevant page title'' do visit root_path expect(page).to have_css(''title'', text: "Todo") end end

El mensaje de falla es:

1) View the homepage user sees relevant page title Failure/Error: expect(page).to have_css(''title'', text: "Todo") Capybara::ExpectationNotMet: expected to find css "title" with text "Todo" but there were no matches. Also found "", which matched the selector but not all filters.

El elemento del título y el texto correcto están en la página representada

Pero cuando cambio esta línea en la especificación de características:

expect(page).to have_css(''title'', text: "Todo")

a esto:

page.has_css?(''title'', text: "Todo")

entonces la prueba pasa. [Editar - pero vea la respuesta a continuación de @JustinKo que esta prueba no es una buena prueba, ya que siempre pasará]

¿Cómo hago para que have_css(...) el have_css(...) ? ¿Es un problema de configuración?

Aquí está la parte relevante de mi Gemfile :

group :development, :test do gem ''rspec-rails'' gem ''capybara'' end

Y mi spec/spec_helper.rb está configurado de esta manera:

ENV["RAILS_ENV"] ||= ''test'' require File.expand_path("../../config/environment", __FILE__) require ''rspec/rails'' require ''rspec/autorun'' require ''capybara/rails'' require ''capybara/rspec'' Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } RSpec.configure do |config| # out of the box rspec config code ommitted config.include Capybara::DSL end

Alguien sabe lo que podría estar haciendo mal?