题
我目前正在努力从 Cucumber 中删除我的 Sinatra 应用程序的辅助方法。
我有一个带有简单会话身份验证的 Sinatra 应用程序(通过Cookie)我希望通过为我的删除 logged_in?
帮助方法来启用身份验证黄瓜场景。
Sinatra和Cucumber似乎有关于会话的问题,所以我想到只使用Mocha来解决这个问题。
但是,我不知道如何从 Given
-Block中访问 Sinatra :: Application
实例以隐藏方法。
解决方案
您可以使用 Sinatra :: Application.class_eval
编辑:请参阅原始海报的答案以获得完整的解释。
其他提示
似乎我需要在之前直接覆盖我的身份验证机制。在结束之前...结束
-block
所以我最终在 features / support /
文件中放置了 hooks.rb
,覆盖了我的 logged_in?
和 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
我唯一需要注意的是,应用程序中没有其他操作直接从 session
读取,而是使用这些帮助程序。
可悲的是,我认为这种通过Cucumber处理基于会话的Sinatra应用程序的方式已经在其他地方进行了描述,我只是认为我的问题不同。
不隶属于 StackOverflow