Domanda

Al momento sto lottando per mettere a punto un metodo di supporto della mia Sinatra dall'interno di Cetriolo .

Ho un'app Sinatra con autenticazione di sessione semplice (tramite cookie) e voglio disattivare l'autenticazione cancellando il metodo helper login_in? per il mio Scenari di cetrioli . Sembra esserci un problema con Sinatra e Cucumber riguardo alle sessioni, quindi ho pensato di usare Mocha per aggirare il problema.

Tuttavia non so come posso accedere all'istanza Sinatra :: Applicazione dall'interno di un blocco Dato per spegnere il metodo.

È stato utile?

Soluzione

Puoi ottenere il giusto contesto usando Sinatra::Application.class_eval

Modifica: vedi la risposta del poster originale per una spiegazione completa.

Altri suggerimenti

Sembra che debba scavalcare direttamente il mio meccanismo di autenticazione all'interno di un Prima di fare ... fine -blocco

Quindi ho finito con un hooks.rb inserito nel file features / support / che sovrascriveva il mio login_in? e il current_user .

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

L'unica cosa di cui mi sono dovuto occupare è che le altre azioni all'interno dell'applicazione non siano state lette direttamente dalla session ma che utilizzino piuttosto questi helper.

Purtroppo penso che questo modo di gestire le applicazioni Sinatra basate sulla sessione tramite Cucumber sia già stato descritto altrove e ho solo pensato che il mio problema era diverso .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top