Stubbing Sinatra assistant dans Concombre
Question
Je ne parviens pas à arrêter une méthode d'assistance de mon application Sinatra depuis Cucumber .
J'ai une application Sinatra avec authentification de session simple (par cookies) et je souhaite désactiver l'authentification en annulant la méthode d'assistance log_in?
pour mon Concombre .
Il semble y avoir un problème avec Sinatra et Cucumber concernant les sessions, alors j’ai pensé à utiliser simplement Mocha pour résoudre le problème.
Cependant, je ne sais pas comment accéder à l'instance de Sinatra :: Application
à partir d'un Given
-Block pour tronquer la méthode.
La solution
Vous pouvez obtenir le bon contexte en utilisant Sinatra :: Application.class_eval
Modifier: voir la réponse de l'affiche originale pour une explication complète.
Autres conseils
Il semble que je doive remplacer directement mon mécanisme d'authentification dans un bloc Before do do ... end
-block
Je me suis donc retrouvé avec un hooks.rb
placé dans le fichier features / support /
écrasant mon log_in?
et le utilisateur actuel.
méthode.
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
La seule chose à laquelle je devais m'occuper, c'est qu'aucune autre action de l'application ne lise directement à partir de session
, mais utilise plutôt ces aides.
Malheureusement, je pense que cette façon de gérer les applications Sinatra basées sur des sessions via Cucumber est déjà décrite ailleurs et je pensais que mon problème était différent .