ruby on rails - pruebas - ¿Cómo se especifican los parámetros POST en una prueba de Rails?
rails web service json (2)
post :create, :user => { :email => ''[email protected]'' }
La forma general de todos los métodos de prueba get, post, put, delete son los siguientes:
def post(action_name, params_hash = {}, session_hash = {})
Y en las pruebas, el hash de params se envía directamente a los params
de la acción del controlador sin traducción de ningún tipo. Incluso haciendo pruebas de integración, realmente no debería necesitar probar esta traducción de cadena a params, ya que está cubierta muy bien por las pruebas de framework de rails. Además, todos los métodos de prueba que necesitan parámetros aceptan un hash de esta manera sin quejarse para facilitar las cosas.
Trabajando con Test :: Unit y Shoulda. Intentando probar Users.create
. Según entiendo, los formularios de Rails envían parámetros para un objeto como este:
user[email]
Que se convierte en hash en tu acción, ¿verdad?
params[:user][:email]
OK, entonces en mi prueba lo he intentado ...
setup { post :create, :post => { ''user[email]'' => ''invalid@abc'' } }
y
setup { post :create, :post => { :user => { :email => ''abc@abcd'' } } }
En ambos casos, en mi acción, params[:user]
es nil.
post :create, {:post => {}, :user => {:email => ''abc@abcd''} }
En este caso, params [: post] es {}, params [: usuario] es {: email => ''abc @ abcd''}, params [: usuario] [: email] es ''abc @ abcd''.
post :create, {:post => {:user => {:email => ''abc@abcd''} } }
En este caso, params [: post] [: user] [: email] es ''abc @ abcd''