首页 > 解决方案 > RSpec::ExampleGroups::AdminOrdersController:Class 的未定义方法“设置”

问题描述

spec_helper.rb

    RSpec.configure do |config|
      config.include Devise::Test::ControllerHelpers, type: :controller
    end

rails_helper.rb

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../config/environment', __dir__)

abort("The Rails environment is running in production mode!") if Rails.env.production?

require 'rspec/rails'
require 'spec_helper'
require 'support/controller_macros'

# include shared examples
require 'support/shared_examples'

require 'devise'

# Testing inline
require 'sidekiq/testing/inline'

Dir[Rails.root.join('spec/support/*.rb')].each { |f| require f }
# Loading Devise Warden into the controller tests.
RSpec.configure do |config|
  config.include Devise::Test::ControllerHelpers, type: :controller
  # include fabricators
  config.fixture_path = "#{::Rails.root}/spec/fabricators"
end

规格/控制器/管理员/orders_controller_spec.rb

require 'rails_helper'
require_relative '../../support/controller_macros'

describe Admin::OrdersController, :type => :controller do 
    describe 'GET index' do
        @admin = Fabricate(:admin)
        setup_admin(@admin)
        context 'Admin not logged in' do
         it_behaves_like 'requires sign in' do
          get :index 
         end
        end
     end
end

规范/支持/controller_macros.rb

def setup_admin(a_user = nil)
    @request.env["devise.mapping"] = Devise.mappings[:admin]
    sign_in a_user || Fabricate(:admin)
  end

这是我得到的完整错误堆栈

An error occurred while loading ./spec/controllers/admin/orders_controller_spec.rb.
Failure/Error:
  describe Admin::OrdersController, :type => :controller do 
    describe 'GET index' do
        @admin = Fabricate(:admin)
        setup_admin(@admin)
        context 'Admin not logged in' do
          it_behaves_like 'requires sign in' do
            get :index 
          end
        end

NoMethodError:
  undefined method `setup' for RSpec::ExampleGroups::AdminOrdersController:Class
# /home/riya/.rvm/gems/ruby-2.4.0/gems/devise-4.7.3/lib/devise/test/controller_helpers.rb:30:in `block in <module:ControllerHelpers>'
# ./spec/controllers/admin/orders_controller_spec.rb:4:in `<top (required)>'
No examples found.


Finished in 0.00007 seconds (files took 1.85 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

我尝试了所有可能的解决方案,但对我没有任何帮助。

我正在使用 rails-5.2、rspec-3.9、

即使我只运行“rspec”,我也会收到所有规格的这个错误。

标签: rspecdeviseruby-on-rails-5testcase

解决方案


推荐阅读