Pergunta

Atualmente, estou lutando com apagando um método auxiliar da minha Sinatra aplicativo de dentro Pepino .

Eu tenho um Sinatra aplicativo com autenticação de sessão simples (por cookies) e eu quero transformar de autenticação por apagando o método auxiliar logged_in? para minhas Pepino cenários. Parece haver um problema com Sinatra e pepino sobre sessões Então eu pensei sobre apenas usando Mocha Para contornar o problema.

No entanto, eu não sei como eu posso acessar a instância Sinatra::Application de dentro de um Given-Block a toco o método.

Foi útil?

Solução

Você pode obter o contexto certo usando Sinatra::Application.class_eval

Edit:. Veja a resposta do cartaz original para explicação completa

Outras dicas

Parece que eu preciso para substituir diretamente o meu mecanismo de autenticação dentro de um Before do ... end-block

Então eu acabei com um hooks.rb colocado em arquivo features/support/ substituir meu logged_in? eo método 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

A única coisa que eu tinha que tomar cuidado, é que os há outras ações dentro do aplicativo lida diretamente da session mas sim usar esses ajudantes.

Infelizmente eu acho que esta maneira de lidar com aplicações Sinatra sessão baseada através de pepino já está descrito em outro lugar e eu só pensava meu problema era diferente .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top