2011-02-24 48 views
1

我已经剖析了我的特征文件。我发现我的登录步骤花费了大部分时间。黄瓜速度,性能调整

Given /^I am logged in as "(.+)"$/ do |login| 
    visit path_to('the home page') 
    fill_in "login", :with => login 
    fill_in "password", :with => 'foobar' 
    click_button "loginButton" 
end 

我的开发箱需要5秒以上。

我想再次登录登录功能,但没有填写表单,只需设置会话,并在我的其他测试中用作背景场景。

Given /^I am logged in as "(.+)" through session$/ do |login| 
    user= User.find_by_login(login) 
end 

上述步骤找到用户,但我如何使它存储会话,并重定向我?

回答

0

你可以避免在其他步骤中进行身份验证,可能不是一个死黄瓜开发人员会说什么。但是,如果您在其他地方测试过身份验证工作流程,那么我没有看到这种伤害。我没有尝试这个,但我认为变量范围应该是正确的。

Given /^I am logged in as "(.+)" through session$/ do |login| 
    @user= User.find_by_login(login) 
    #open the class and spike 
    class ApplicationController < ActionController::Base 
    def current_user 
     @user 
    end 
    end 
end 
+0

这不会取代current_user的剩余的红宝石进程的生命周期?如果是这样,这可能会产生一些真正令人困惑的结果,如果你有其他黄瓜功能,_do_真的登录... – 2011-02-25 13:32:01

+0

我同意,最好有点哈克。您可以使用after场景挂钩将current_user重置为零,也许可以通过标记捕获场景以了解哪些场景需要登录步骤运行。 – 2011-02-26 21:17:53