我尝试用Google进行搜索,但是对于ActionView的此错误我无处发现我正在使用Minitest(无Rspec)
custom_user_groups_helper_test.rb
require 'test_helper'
class CustomUserGroupsHelperTest < ActionView::TestCase
test "should work custom user" do
post :save_custom_groups
assert_equal "save_custom_groups", @controller.action_name
end
end
test_helper.rb
class ActiveSupport::TestCase
#include Devise::Test::IntegrationHelpers
include Devise::Test::ControllerHelpers
fixtures :roles,:user_role_mappings,:items,:users,:client_purchases_line_items,:custom_labels
def sign_in(user = users(:client))
ApplicationController.any_instance.stubs(:current_user).returns(user)
ApplicationController.any_instance.stubs(:current_person).returns(user)
end
end
此test_helper.rb
在控制器测试中工作正常,但是当我将其用于辅助测试时它引发了这个错误
Error:
CustomUserGroupsHelperTest#test_should_work_custom_user:
NoMethodError: undefined method `env' for nil:NilClass
我也尝试了另一种解决方案
但是这似乎是针对控制器的,所有解决方案都不是针对助手测试的。从Devise的include
到ActionView::TestCase
的内容]
我试图包括这些
include Devise::TestHelpers include Devise::Test::IntegrationHelpers include Devise::Test::ControllerHelpers
正如StackOverflow上的一种解决方案所述
The Devise :: TestHelpers仅应包括在控制器测试中,因此您需要通过将其添加到测试助手中来将其移动到ActionController :: TestCase:
Then what to include for Helper test which inherits ActionView::TestCase
How to test helpers in the Minitest framework.
但是我想include Devise::Test::IntegrationHelpers
和include Devise::Test::ControllerHelpers
用于不同导轨版本的控制器。
错误
<<您从根本上误解了Rails中的帮助者以及应该如何对其进行测试。这是一个真正含糊的术语,确实可以理解,在不同的上下文中表示不同的意思。
require 'test_helper'
class CustomUserGroupsHelperTest < ActionView::TestCase
test "should work custom user" do
post :save_custom_groups
assert_equal "save_custom_groups", @controller.action_name
end
end