我正在测试我的employees_controller,并且在我对已登录用户的索引测试中,我收到的错误似乎与我的模型关系有关。
测试是:
describe "for signed-in user" do
before(:each) do
@user = test_sign_in(Factory(:user))
end
it "should have the right title" do
get :index
response.should have_selector('title', :content => "Employee List")
end
我设置了render_views。我还将每个用户绑定到一个位置,并且员工索引视图应该向员工显示用户的位置。在我的索引视图中,我有以下代码来显示员工的位置名称:
<h1>Listing employees for <%= current_user.location.name %> </h1>
当我运行测试时,收到包含的错误消息 “::的ActionView ::模板错误: undefined方法'名称为nil:NilClass“
在我的factories.rb文件中,我确实将用户的位置ID设置为有效的ID。为什么current_user.location返回nil?考试中我错过了什么?谢谢!
答案 0 :(得分:2)
最有可能的,只是登录过程不正确。我就是这样做的。我有一个/spec/support/controller_macros.rb和里面:
module ControllerMacros
def login_user
before(:each) do
@request.env["devise.mapping"] = :user
@user = Factory(:user)
sign_in @user
end
end
end
现在,在我的控制器规格中:
describe AbilitiesController do
login_user
describe "POST 'train' ..." do
...
end
...