7

El siguiente genera un error: "no definidas locales de variables o métodos` params'"¿Cómo se prueba el hash de params en una prueba de Rails?

assert_equal params[:recipient_id], users(:one).id

¿Cómo se prueba el hash params?

Además, ¿cómo se prueba assert_redirect cuando hay params presentes? Los parámetros se adjuntan a la URL, por lo que la prueba de model_path o similar falla.

Trabajar con construido en la clase de prueba en Rails 3.

+0

@B Seven: ¿Por qué quiere probar lo que está presente en el hash de params? Lo sé, es una pregunta molesta, pero me parece extraño que alguien quiera probar tal cosa. Lo que es más importante es que el controlador está recuperando el objeto correcto. – Samo

+0

@Samo No estoy seguro de si este es un motivo válido, pero tengo una acción de controlador que combina un campo de tiempo y un campo de fecha (los tengo como campos separados), y en caso de error, tiene sentido asegurar que los campos se han separado correctamente para que se muestren al usuario tal como se enviaron originalmente. ¿Cuál sería tu opinión sobre esto? –

Respuesta

7

http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers da alguna de esta información.

En este caso, params se adjunta al objeto @request o @response (dependiendo de qué método HTTP que se está probando), para que pueda referirse a ella como @request.params[:recipient_id].

Para la redirección: assert_redirected_to post_path(assigns(:post)) afirmará que se le redirige a la ruta adecuada para un modelo determinado. El método asigna debe tener las variables de instancia que está configurando dentro del controlador para pasar a la vista

Cuestiones relacionadas