我正在尝试编写一个Cucumber场景,要求我有一个登录用户 – 这通常很简单,但我只使用OpenID身份验证(认证插件的简化).然而,在深入挖掘open_id_authentication插件后,我不确定如何在Cucumber中实现这一点.
解决方法
我找到了一种方法,如果你将它放在你的features / support / env.rb中:
ActionController::Base.class_eval do private def begin_open_id_authentication(identity_url,options = {}) yield OpenIdAuthentication::Result.new(:successful),identity_url,nil end end
然后你可以在适当的步骤中做这样的事情:
Given /^I am logged in as "(.*)"$/ do |name| user = User.find_by_name(user) post '/session',:openid_url => user.identity_url #Some assertions just to make sure our hack in env.rb is still working response.should redirect_to('/') flash[:notice].should eql('Logged in successfully') end
我只是完全破坏了黄瓜功能的开放id身份验证,显然如果我需要登录失败的实例,我可以根据提供的identity_url做到这一点.