“ NoMethodError:nil:NilClass的未定义方法'env',用于在Rails中进行助手测试

问题描述 投票:0回答:1

我尝试用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

我也尝试了另一种解决方案

"undefined method `env' for nil:NilClass" in 'setup_controller_for_warden' error when testing Devise using Rspec

但是这似乎是针对控制器的,所有解决方案都不是针对助手测试的。从Devise的includeActionView::TestCase的内容]

我试图包括这些

include Devise::TestHelpers
include Devise::Test::IntegrationHelpers
include Devise::Test::ControllerHelpers

正如StackOverflow上的一种解决方案所述

The Devise :: TestHelpers仅应包括在控制器测试中,因此您需要通过将其添加到测试助手中来将其移动到ActionController :: TestCase:

  1. Then what to include for Helper test which inherits ActionView::TestCase
  • How to test helpers in the Minitest framework.
  • 但是我想include Devise::Test::IntegrationHelpersinclude Devise::Test::ControllerHelpers用于不同导轨版本的控制器。

    错误

    enter image description here

    <<

    您从根本上误解了Rails中的帮助者以及应该如何对其进行测试。这是一个真正含糊的术语,确实可以理解,在不同的上下文中表示不同的意思。

    ruby-on-rails devise minitest
    1个回答
    0
    投票
    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
    © www.soinside.com 2019 - 2024. All rights reserved.