尝试包含 Devise::Test::ControllerHelpers 时出错
Error when trying to include Devise::Test::ControllerHelpers
我正在尝试开始进行控制器测试,但我不确定自己做错了什么。这是我的代码,以及它产生的错误:
require 'test_helper'
class InvProcure::UserImportsControllerTest < ActionDispatch::IntegrationTest
include Devise::Test::ControllerHelpers
test "should get index" do
user = users(:foobars_admin)
sign_in(:user, user)
get inv_procure_user_imports_path
assert_response :success
end
end
NoMethodError: undefined method `env' for nil:NilClass
/home/blaine/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/devise-4.7.1/lib/devise/test/controller_helpers.rb:42:in `setup_controller_for_warden'
看起来错误可能是在包含设计测试助手时或调用 sign_in
时发生的。
来自文档:https://www.rubydoc.info/gems/devise/Devise/Test/ControllerHelpers
Devise::Test::ControllerHelpers
provides a facility to test controllers in isolation when using ActionController::TestCase
allowing you to quickly sign_in or sign_out a user. Do not use Devise::Test::ControllerHelpers
in integration tests.
您正在继承集成测试 class 而不是控制器测试 class,后者现在是控制器测试的默认设置(从 Rails 5 开始,控制器测试是通过父级生成的class 作为 ActionDispatch::IntegrationTest
而不是 ActionController::TestCase
)。 Devise::Test::ControllerHelpers
是为 ActionController::TestCase
而不是集成测试而构建的。
您可以尝试使用 Devise::Test::IntegrationHelpers
,它应该具有类似的集成测试方法。
文档:https://www.rubydoc.info/gems/devise/Devise/Test/IntegrationHelpers
我正在尝试开始进行控制器测试,但我不确定自己做错了什么。这是我的代码,以及它产生的错误:
require 'test_helper'
class InvProcure::UserImportsControllerTest < ActionDispatch::IntegrationTest
include Devise::Test::ControllerHelpers
test "should get index" do
user = users(:foobars_admin)
sign_in(:user, user)
get inv_procure_user_imports_path
assert_response :success
end
end
NoMethodError: undefined method `env' for nil:NilClass
/home/blaine/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/devise-4.7.1/lib/devise/test/controller_helpers.rb:42:in `setup_controller_for_warden'
看起来错误可能是在包含设计测试助手时或调用 sign_in
时发生的。
来自文档:https://www.rubydoc.info/gems/devise/Devise/Test/ControllerHelpers
Devise::Test::ControllerHelpers
provides a facility to test controllers in isolation when usingActionController::TestCase
allowing you to quickly sign_in or sign_out a user. Do not useDevise::Test::ControllerHelpers
in integration tests.
您正在继承集成测试 class 而不是控制器测试 class,后者现在是控制器测试的默认设置(从 Rails 5 开始,控制器测试是通过父级生成的class 作为 ActionDispatch::IntegrationTest
而不是 ActionController::TestCase
)。 Devise::Test::ControllerHelpers
是为 ActionController::TestCase
而不是集成测试而构建的。
您可以尝试使用 Devise::Test::IntegrationHelpers
,它应该具有类似的集成测试方法。
文档:https://www.rubydoc.info/gems/devise/Devise/Test/IntegrationHelpers