dev*_*jay 5 testing ruby-on-rails devise
使用 Rails 进行测试时,我遇到了“Object:Class (NoMethodError) 的未定义方法‘setup’”。运行任何测试时出现此错误。
我正在使用 Ruby on Rails 教程中的测试设置,另外在我的测试文件中包含了 Devise::Test::IntegrationHelpers(用于集成测试)和 Devise::Test::ControllerHelpers(用于控制器测试)。
这是我得到的错误:.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/devise4.4.3/lib/devise/test/controller_helpers.rb:30:in block in <module:ControllerHelpers>': undefined methodsetup' for Object :Class (NoMethodError)
这是错误所指的 controller_helpers 文件中的行:
module Devise
module Test
module ControllerHelpers
extend ActiveSupport::Concern
included do
setup :setup_controller_for_warden, :warden
end
.
.
.
Run Code Online (Sandbox Code Playgroud)
这些是我的测试宝石:
group :test do
gem 'rails-controller-testing', '1.0.2'
gem 'minitest-reporters', '1.1.14'
gem 'guard', '2.13.0'
gem 'guard-minitest', '2.4.4'
end
Run Code Online (Sandbox Code Playgroud)
这是我的 test_helper.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
end
Run Code Online (Sandbox Code Playgroud)
这是我的测试之一:
require 'test_helper'
class UsersControllerTest < ActionController::TestCase
include Devise::Test::ControllerHelpers
setup do
@user = users(:one)
end
test "should get index" do
get users_url
assert_response :success
end
test "should get new" do
get new_user_url
assert_response :success
end
.
.
.
end
Run Code Online (Sandbox Code Playgroud)
任何有关此问题的帮助将不胜感激。谢谢你。