Stubbing Sinatra helper em Pepino
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.
Solução
Você pode obter o contexto certo usando Sinatra::Application.class_eval
Edit:. Veja a resposta do cartaz original para explicação completa ??p>
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 .