2012-06-11 11 views
0

我一直在努力创建一个应该在任何rspec测试运行之前执行的登录函数。在每个rspec请求测试运行之前登录的独立帮助函数

我有现在的问题是:

def login 
    post "/session", { "session[username]" => "bjones" } 
end 
我spec_helper.rb文件

然后

,我中的请求目录我spec.rb文件一个接着一个。

require 'spec_helper' 

describe "Sessions" do 
    describe "GET /dashboards" do 

    login 

    it "displays the dashboard" do 
     get dashboard_path 
     puts response.body 
    end 
    end 
end 

然而,当我尝试运行测试,我得到:

undefined method `post' for #<Class:0x4f08828> (NoMethodError) 

我是相当新的导轨和全新的测试和RSpec所以也许有我丢失的东西在这里根本。基本上,我想要做的就是设置会话变量,以便在测试运行时我将登录。也许不同的方法会更好?或者,也许我需要将该登录功能放在不同的地方?

我碰到过this答案这是有用的,但它不是用于rspec,所以我无法理解这样的辅助函数会去哪里。

+0

您是否在会话助手中定义了登录功能? – cdesrosiers

+0

不,我只是假设我需要将它包含在我的spec_helper文件中。另外我的理解是,只有视图和控制器文件才能访问辅助函数。 – yiinewbie

+0

我认为你的应用程序已经有一个登录功能,你只是试图执行一个单独的测试。在spec/support/utilities.rb(你必须创建这个文件和目录)中放置这样的助手方法对你的测试更好,它将被自动包含进去。但我认为这不会解决你遇到的错误。是否在“spec_helper”中的模块或类中定义了登录? – cdesrosiers

回答

0

尝试

let(:login) { 
    post "/session", { "username" => "bjones" }.to_json 
} 

这可能需要进行修改,以使用.to_json与否,取决于控制器接受什么内容类型。

相关问题