2011-05-18 5 views
7

Tengo los siguientes pasos en una prueba de integración de capybara/rspec, que simplemente está tratando de registrar un nuevo miembro.¿Necesito un controlador Devise personalizado si solo cambio la vista de Registrarse?

visit new_member_registration_path 
fill_in('Name:',      :with => 'Rob Doe') 
fill_in('member_email',    :with => '[email protected]') 
fill_in('member_email_confirmation', :with => '[email protected]') 
fill_in('member_password',   :with => 'secret') 
fill_in('Company or Venue Name:', :with => 'Rob Inc.') 
fill_in('Contact Number:',   :with => '040544404440') 
click_button('Sign up') 
save_and_open_page 

Por alguna razón el 'e-mail' y los datos 'contraseña' no se pasa al controlador DeviseRegistrations (que está en blanco al ver el registro de la prueba) y por lo tanto provocando la validación falle. Sin embargo, hasta el save_and_open_page no hay errores rspec (por lo que los campos están rellenando).

¿Qué me estoy perdiendo? ¿Debo hacer una subclase del controlador DeviseRegistrations?

analizadas en los carriles 3.0.7 con el estante de la prueba 0.5.7 y carriles 3.1rc1 y la cremallera de la prueba 0.6.0

+0

¿Qué hace en su navegador? – monocle

+0

funciona perfectamente en el navegador. – robzolkos

+0

Dudo que sea Devise. ¿Tiene validaciones en los campos de nombre y correo electrónico? Si Capybara está funcionando, entonces save_and_open_page debería tener errores cuando esos campos están en blanco y eso debería significar que Devise está funcionando correctamente. – monocle

Respuesta

2

El problema estaba en el archivo de diseño de la aplicación. Tenía otro formulario (aunque oculto) que estaba publicando los campos del formulario en blanco.

Después de crear un proyecto en blanco y ver que funcionaba perfectamente, retiré todas las partes posibles de mi aplicación hasta que encontré al culpable.

De modo que la respuesta a la pregunta es: no, no se requiere un controlador de diseño personalizado cuando se utilizan vistas de diseño personalizadas.

3

Asumiendo que tiene depurador en su Gemfile, aquí es cómo se puede usar. (Esto supone que está utilizando el controlador de estante para Carpincho.)

# test.rb 
visit new_member_registration_path 
fill_in('Name:',      :with => 'Rob Doe') 
debugger 

El terminal se detendrá la secuencia de comandos y esperar a que haga algo.

# Terminal 
/file/path/to/you/test.rb:12 
fill_in('Name:',      :with => 'Rob Doe') 
(rdb:1) 

abrir una sesión de IRB aquí:

(rdb:1) irb 

Usted puede hacer cualquier método RSpec o capibara aquí:

>> current_path.should == 'foo/bar' 

intente enviar el formulario en este punto:

>> click_button "Sign Up" 
>> save_and_open_page 

Vea qué mensajes de error Devise te dio en la página resultante. Con el conductor del estante, no podrá ver los campos que se rellenan. En ese caso, es posible que desee intentar utilizar el controlador selenio

# test.rb 
Capybara.default_driver = :selenium 
visit new_member_registration_path 

Sin embargo, no se puede conducir de Carpincho IRB mediante el controlador de selenio . Sin embargo, podrá ver qué valores de forma le está poniendo el selenio a su forma. Dado que las cosas suceden rápidamente con Selenium, puede usar el depurador para detener la prueba, mientras inspecciona la página que Selenium abrió en su navegador.

+0

+1 para una respuesta muy útil. Sugiero probar con el controlador de Akephalos también. Como no abre un navegador externo, puede que se pause. – Nerian

+0

Gracias por esto, aunque no ayudó porque no estaba viendo información nueva o diferente que no estaba viendo en el registro de prueba o usando save_and_open_page. – robzolkos

Cuestiones relacionadas