Desactivar render cuando se prueba un controlador
-
08-07-2019 - |
Pregunta
Estoy usando Test :: Unit con hombro para probar un controlador.
Como solo estoy probando el controlador, no quiero que se visualice la vista.
Estoy tropezando con algunos objetos, se lanzan algunos errores cuando se procesa la vista, pero la prueba no debe fallar, porque el controlador es correcto.
Entonces, ¿hay alguna forma de desactivar la representación de una plantilla / vista, desde mis pruebas?
Escuché que rSpec funciona así.
Solución
Si estás usando Mocha, es fácil. Agregue esto a su prueba individual o su método de configuración:
@controller.expects(:render)
Si no lo estás, bueno, usa Mocha.
gem install mocha
Luego en tu test_helper.rb
require 'mocha'
Otros consejos
Realmente no deberías ver ninguna vista en tus pruebas. ¿Puedes publicar tu código de prueba fallido? Las pruebas del controlador (funcional) solo deberían verificar que una acción en particular está ocurriendo cuando se llama a su acción. Es decir, debe verificar que muestra la vista correcta o redirige a una acción diferente. También puede verificar la configuración del flash u otras variables para la vista. ¿Es este el tipo de esto que está probando?
Aquí hay un buen ejemplo de prueba de una acción de show con una solicitud de obtención tomada de los documentos de hombro:
class UsersControllerTest < Test::Unit::TestCase
context "on GET to :show" do
setup { get :show, :id => 1 }
should_assign_to :user
should_respond_with :success
should_render_template :show
should_not_set_the_flash
should "do something else really cool" do
assert_equal 1, assigns(:user).id
end
end
end
Quizás eche un vistazo a guías de rieles lo cual es bastante bueno también.