Tengo una aplicación que sirve Sinatra páginas como de sólo lectura o modificable en función de si el usuario está conectado.variables de instancia del controlador de pruebas con el estante :: Prueba y Sinatra
El controlador establece una variable @can_edit
, que es utilizado por las vistas para ocultar/mostrar enlaces de edición. ¿Cómo puedo probar el valor @can_edit
en mis pruebas? No tengo idea de cómo llegar a la instancia actual del controlador en Rack :: Test.
utilizo class_eval
al stub del método logged_in?
en el controlador, pero estoy teniendo que recurrir a la comprobación last_response.body
para mis editar enlaces para ver si @can_edit
se ha establecido o no.
¿Cómo puedo probar el valor de @can_edit
directamente?
"es mejor probar los resultados, no los detalles de implementación" He visto declaraciones similares como esta antes, y tengo que estar en desacuerdo. Si quiere 2, 1 + 1 funciona bastante bien, pero también lo hace 1 + 2 + 10 - 11. Ninguno de los dos significa que su aplicación "realmente está funcionando correctamente". – nowk
No estoy completamente en desacuerdo con usted, sin embargo: digamos que hay un método que se implementa incorrectamente.Si el método devuelve la respuesta correcta el 100% del tiempo (no se puede pensar en un caso en el que falla), ¿la implementación es realmente "incorrecta"? ¿Importa? Si se encuentra probando los valores de las variables dentro de los métodos, es posible que no tenga suficientes casos de prueba (entradas). Si cambia el nombre de las variables o cambia la implementación de su aplicación sin cambiar su comportamiento, sus pruebas deberían pasar sin modificaciones. Esta es una gran razón para usar las pruebas en primer lugar. –
Creo que la prueba @can_edit está probando la salida del controlador. No me gusta probarlo indirectamente al verificar la vista de lo que debería suceder cuando se establece @can_edit. Esa debe ser una prueba diferente, únicamente para la vista. – Brian