2011-05-17 9 views
10

He estado usando Capybara para pruebas de integración/solicitud, pero me acabo de dar cuenta de que no puedo ver las pruebas con él.Usando webrat y capybara juntos

This SO answer sugiere Webrat y Capybara se pueden utilizar en tándem; pero el RSpec docs sugiere que uno debe elegir entre los dos. Here's another github thread que sugiere que webrat se puede usar para vistas y capibaras para la integración.

He encontrado que si incluyo Webrat en mi gemfile, puedo usar webrat para las vistas sin ningún problema, pero mis pruebas de integración con estilo de capibara ya no funcionan. En concreto, me sale un error con el siguiente ejemplo:

it "should have a Home page at '/'" do 
    visit '/' 
    page.should have_selector('title', :content => "Home page") 
end 

me sale el error:

No response yet. Request a page first. 

¿Cuál es la mejor manera (si las hay?) Para obtener webrat y capibara a recibir unos de otros?

+0

Estoy teniendo el mismo problema. Debo decir sin embargo, hace un mes que estaba usando el juntos en un proyecto diferente, no hay problema. Parece que ya no funciona. Otra cosa, intenté actualizar capybara a 1.0.0.beta1. Aunque recibo diferentes mensajes de error. –

+0

Me di por vencido y comencé a usar el carpincho sin webrat. Ahora pruebo mis puntos de vista de una manera indirecta usando los métodos de prueba de integración de capibara, definitivamente no es ideal, pero lo haré. Estoy seguro de que hay una manera de hacer que trabajen juntos, ¡ojalá que alguien llegue con una buena respuesta! –

+0

Pregunta rápida, ¿cómo está probando acciones de poner y eliminar con el capibara en los controladores? Parece que solo tiene una acción de "visita" que solo puede emitir solicitudes GET. –

Respuesta

11

Generalmente no hay ninguna razón para usar Webrat y Capybara. Escoja uno (probablemente el carpincho). Las pruebas de vista son una mala idea y no deberían ser necesarias en general; Usualmente tus pruebas de integración deben cubrir ese terreno.

En otras palabras, corrija su estrategia de prueba y el problema desaparecerá.

+0

Además, trate de evitar el uso de RSpec para las pruebas orientadas al usuario. El pepino es mucho mejor en esto. –

6

En general, estoy de acuerdo con Marnen sobre "simplemente elija uno de ellos, probablemente Capybara", pero una posible razón para usar ambos es la migración gradual.

Digamos que usted tiene un conjunto de pruebas grande y lo está migrando a Capybara, pero le gustaría dejar que algunas de sus pruebas anteriores permanezcan "controladas por Webrat" durante un tiempo.

Aunque, no he encontrado solución ideal para este caso, esto es lo que hice:

# features/support/env.rb 
... 
if ENV['WITH_WEBRAT'].nil? 
    require 'capybara/rails' 
    require 'capybara/cucumber' 
    ... 
else 
    require 'webrat' 
    ... 
end 
... 

# config/cucumber.yml 
... 
default: --profile capybara 
capybara: <% std_opts %> --tags [email protected] features 
webrat: <% std_opts %> --tags @webrat features WITH_WEBRAT=1 
... 

# features/webrat.feature 
@webrat 
... 

# features/capybara.feature 
... 

Ahora, puede hacerlo cucumber para hacer funcionar su conjunto de pruebas capibara o de sólo cucumber -p webrat para su legado Webrat características .

No es ideal, pero funcionó para mí.

Cuestiones relacionadas