Ruby on rails 4 命名错误:未定义的方法“email';零级:零级

Ruby on rails 4 命名错误:未定义的方法“email';零级:零级,ruby-on-rails-4,integration-testing,railstutorial.org,minitest,Ruby On Rails 4,Integration Testing,Railstutorial.org,Minitest,还有一些其他线程处理此问题,但没有一个线程帮助我们解决问题 当我们使用Minitest运行一个集成测试时,我们得到以下错误: ERROR["test_index_including_pagination", UsersIndexTest, 2015-06-30 06:44:19 -0700] test_index_including_pagination#UsersIndexTest (1435671859.78s) NoMethodError: NoMethodError:

还有一些其他线程处理此问题,但没有一个线程帮助我们解决问题

当我们使用Minitest运行一个集成测试时,我们得到以下
错误

ERROR["test_index_including_pagination", UsersIndexTest, 2015-06-30 06:44:19 -0700]
 test_index_including_pagination#UsersIndexTest (1435671859.78s)
NoMethodError:         NoMethodError: undefined method `email' for nil:NilClass
            test/test_helper.rb:20:in `log_in_as'
            test/integration/users_index_test.rb:11:in `block in <class:UsersIndexTest>'
        test/test_helper.rb:20:in `log_in_as'
        test/integration/users_index_test.rb:11:in `block in <class:UsersIndexTest>'
下面是我们的
users\u index\u test.rb
文件的第一部分:

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require "minitest/reporters"
Minitest::Reporters.use!

class ActiveSupport::TestCase
  fixtures :all

  # Returns true if a test user is logged in.
  def is_logged_in?
    !session[:user_id].nil?
  end

  # Logs in a test user.
  def log_in_as(user, options = {})
    password    = options[:password]    || 'password'
    remember_me = options[:remember_me] || '1'
    if integration_test?
      post login_path, session: { email:       user.email,
                                  password:    password,
                                  remember_me: remember_me }
    else
      session[:user_id] = user.id
    end
  end

  private

    # Returns true inside an integration test.
    def integration_test?
      defined?(post_via_redirect)
    end
end
require 'test_helper'

class UsersIndexTest < ActionDispatch::IntegrationTest

  def setup
    @admin     = users(:michael)
    @non_admin = users(:archer)
  end

  test "index including pagination" do
    log_in_as(@user)
    get users_path
    assert_template 'users/index'
    assert_select 'div.pagination'
    User.paginate(page: 1).each do |user|
      assert_select 'a[href=?]', user_path(user), text: user.first_name + " " + user.first_name
    end
  end
需要“测试助手”
类UsersIndexTest

你知道为什么我们会得到这个
NoMethodError:undefined方法“email”来表示nil:NilClass
错误以及如何修复它吗?

这是因为
@user
没有在你的安装方法中初始化。您可以初始化
@admin
@non_admin
,但不能初始化
@user