Stubbing Sinatra ayudante en pepino
Pregunta
Actualmente estoy luchando por desactivar un método auxiliar de mi aplicación Sinatra desde Pepino .
Tengo una aplicación Sinatra con autenticación de sesión simple (mediante cookies) y quiero desactivar la autenticación al quitar el log_in?
para mi Pepino escenarios.
Parece que hay un problema con Sinatra y Cucumber en relación con las sesiones, así que pensé en usar Mocha para solucionar el problema.
Sin embargo, no sé cómo puedo acceder a la instancia de Sinatra :: Application
desde un Given
-Block para desactivar el método.
Solución
Puede obtener el contexto correcto utilizando Sinatra::Application.class_eval
Editar: vea la respuesta del póster original para una explicación completa.
Otros consejos
Parece que necesito anular directamente mi mecanismo de autenticación dentro de un Antes de hacer ... finalizar
-block
Así que terminé con un hooks.rb
colocado en el archivo features / support /
sobrescribiendo mi login_in?
y el current_user
método.
Before do
MySinatraApplicationClass.class_eval do
helpers do
def logged_in?
return true
end
def current_user
# This returns a certain Username usually stored
# in the session, returning it like
# that prohibits different user logins, but for
# now this is enough for me
"Walter"
end
end
end
end
Lo único de lo que tuve que ocuparme es que las otras acciones dentro de la aplicación no se leen directamente de session
sino que usan esos ayudantes.
Lamentablemente, creo que esta forma de manejar aplicaciones de Sinatra basadas en sesiones a través de Cucumber ya se describe en otro lugar y pensé que mi problema era diferente .