在运行每个rspec请求测试之前,单独的辅助函数登录

时间:2012-06-11 23:24:41

标签: ruby-on-rails specifications

我一直在努力创建一个应该在运行任何rspec测试之前执行的登录功能。

我现在拥有的是:

def login
  post "/session", { "session[username]" => "bjones" }
end

在我的spec_helper.rb文件中

然后,我在requests目录中的一个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)

我对rails非常陌生,对测试和rspec来说是全新的,所以也许我在这里缺少一些基本的东西。基本上,我想要做的就是设置会话变量,以便在测试运行时我将登录。也许不同的方法会更好?或者我可能需要将登录功能放在不同的位置?

我遇到了this回答,这有点有用,但不适合rspec所以我无法理解这样的帮助函数会去哪里。

1 个答案:

答案 0 :(得分:0)

尝试

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

这可能需要修改为使用.to_json,具体取决于控制器接受的内容类型。

相关问题