Ruby on rails 4 命名错误:未定义的方法“email';零级:零级
还有一些其他线程处理此问题,但没有一个线程帮助我们解决问题 当我们使用Minitest运行一个集成测试时,我们得到以下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:
错误:
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