Rails 4:(TestCase)控制器索引操作测试中通过关联收集时出错

时间:2014-11-18 17:05:09

标签: ruby-on-rails testing functional-testing fixtures

polls_controller.rb

  def index
    @polls = current_user.polls
  end

以上版本适用于我的用户(current_user)has_many民意调查协会。我想我可以通过设置合适的灯具来复制测试。

polls_controller_test.rb

  setup do
    @current_user = users(:bob)
    @poll = @current_user.polls.build(title: "Poll")
  end

  test "should get index" do
    @polls = @current_user.polls
    get :index
    assert_response :success
    assert_not_nil assigns(:polls)
  end

polls.yml

one:
  title: Poll-1
  user: bob

two:
  title: Poll-2
  user: bob

users.yml里

bob:
  name: Bob Example
  email: bob@example.com
  password_digest: <%= User.digest('password') %>

但是,运行测试会返回

NoMethodError: undefined method `polls' for nil:NilClass

我可以不这样做吗? (显然不是这样的。)为什么@current_user为零?

1 个答案:

答案 0 :(得分:0)

好的,想通了。与往常一样,不是由于一些深奥的错误或语法要求,而是我没有在测试设置中指定session [:user_id] = @ current_user.id,这是由我的current_user帮助方法引用的。因此,测试框架将current_user视为零。欢呼声。