2010-06-04 6 views
8

Estoy escribiendo una prueba de integración para una aplicación de rieles usando webrat. Después de completar un formulario, el usuario presiona enviar y se crea una cuenta.Webrat y rieles: Usar assert_contain después de click_button me da "Estás siendo redirigido"

click_button "Submit" 
assert_contain "Your Account Has Been Created" 

Sin embargo, la prueba falla:

expected the following element's content to include "Your Account Has Been Created": 
You are being redirected. 
<false> is not true. 

Normalmente seguir una redirección me gustaría utilizar post_via_redirect, pero a partir de sólo mirar ejemplos de Webrat, click_button seguido por assert_contain debería funcionar

acabo Empecé a usar Webrat, entonces me estoy perdiendo algo obvio aquí? ¿Por qué me quedo con la respuesta de redirigir?

Gracias!

Deb

Respuesta

11

Con una nueva aplicación Rails 3, también tuve este problema probando un método simple que incluía un redireccionamiento_para llamar al controlador. El método en sí funcionó bien, pero Webrat devolvería el mensaje "Estás siendo redirigido". respuesta.

Añadiendo un paso 'En la página' que pepino muestra (la página que ve webrat abre en el navegador) mostró la respuesta 'Estás siendo redireccionado.' Con un enlace a un enlace de example.org

en base a esta descubrí parche de Yannimac (http://groups.google.com/group/webrat/browse_thread/thread/fb5ff3fccd97f3df):.

#/lib/webrat/core/session.rb 
#starting at line 288 

def current_host 
- URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com" 
+ URI.parse(current_url).host || @custom_headers["Host"] || default_current_host 
end 

+ def default_current_host 
+ adapter.class==Webrat::RackAdapter ? "example.org" : "www.example.com" 
+ end 

Hacer estos cambios ha solucionado el problema, por lo redirect_to llamadas con Webrat funcionan correctamente

+0

parche funciona perfectamente –

+2

también se puede usar '' follow_redirect – Rob

+0

Hay un problema con esto ... no es bastante 100% no coge 'redirect_to: back' – Rob

0

¿Tiene alguna autenticación en sus aplicaciones? Supongo que la redirección se debe a que no has sido autenticado. Si mi suposición es correcta, escriba una configuración para iniciar sesión primero con Webrat.

Cuestiones relacionadas