Rspec错误 - 当前用户与另一个模型之间的关系

时间:2011-04-25 03:52:47

标签: ruby-on-rails rspec

我正在测试我的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?考试中我错过了什么?谢谢!

1 个答案:

答案 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
...