我一直在努力创建一个应该在运行任何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所以我无法理解这样的帮助函数会去哪里。
答案 0 :(得分:0)
尝试
let(:login) {
post "/session", { "username" => "bjones" }.to_json
}
这可能需要修改为使用.to_json
,具体取决于控制器接受的内容类型。