在黄瓜上掐Sinatra帮手
我目前正在努力剔除我的一个帮手方法Sinatra应用程序从黄瓜。在黄瓜上掐Sinatra帮手
我有一个西纳特拉应用与简单的会话认证(由饼干),我想捻熄了logged_in?
辅助方法,为我黄瓜情景把认证。 Sinatra和黄瓜似乎有一个问题关于会议,所以我想只是用摩卡解决这个问题。
但是,我不知道如何从一个Given
块中访问Sinatra::Application
实例来刷出该方法。
您可以通过使用Sinatra::Application.class_eval
编辑得到正确的背景:见楼主的完全解释的答案。
对不起,我想你误解了我的问题。 logged_in?方法已经可以在sinatra应用程序中使用,但是我想将其存储以进行集成测试(无需验证以测试某些工作流程)。主要的问题是我不知道如何从Cucumber步骤中访问我的应用程序的实例。 – Lennart 2009-11-26 08:33:55
我明白了。我想我现在明白了。也许有一些与Sinatra :: Application.class_eval {} – 2009-11-26 09:33:41
是的,这使它的工作。谢谢,我该如何给你提示这个提示?我会回答我自己的问题,以澄清我所做的。 – Lennart 2009-11-26 09:50:29
好像我需要直接重写Before do ... end
- 阻塞
所以我结束了放在features/support/
文件覆盖我logged_in?
和current_user
方法hooks.rb
内我的身份验证机制。
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
读,而是使用这些佣工。
不幸的是我认为这种通过黄瓜处理基于会话的Sinatra应用程序的方式已经在其他地方描述过了,我只是认为我的问题不同。
对这些问题完全不熟悉,我只是在问题标题上恭喜你。 – spender 2009-11-25 22:25:31
我应该改变标题以避免非意图双关吗? – Lennart 2009-11-25 22:55:21