Ruby on rails 失败/错误:要求';rspec/rails';TypeError:错误的参数类型类(应为模块)Rspec V3

Ruby on rails 失败/错误:要求';rspec/rails';TypeError:错误的参数类型类(应为模块)Rspec V3,ruby-on-rails,rspec,factory-bot,rspec-rails,Ruby On Rails,Rspec,Factory Bot,Rspec Rails,我知道,这个错误很常见,但不知何故,我无法找出问题所在,似乎与路径有关。 我也回答了这个问题,但到目前为止运气不好 Gemfile group :development, :test do gem 'faker' gem 'rspec-rails', '~> 3.7' gem 'factory_bot_rails', '~> 4.0' gem 'shoulda-matchers', '~> 3.1' end spec/factories/user.rb

我知道,这个错误很常见,但不知何故,我无法找出问题所在,似乎与路径有关。 我也回答了这个问题,但到目前为止运气不好

Gemfile

group :development, :test do
  gem 'faker'
  gem 'rspec-rails', '~> 3.7'
  gem 'factory_bot_rails', '~> 4.0'
  gem 'shoulda-matchers', '~> 3.1'    
end
spec/factories/user.rb

FactoryBot.define do
  factory :user do
    name "Andy"
  end
end
require 'rails_helper'

RSpec.describe User, type: :model do

it "should be invalid without phone number" do
    user = build(:user)
    user.phone = nil
    expect(user).not_to be_valid
  end
end
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
require 'support/factory_bot'
...
...
规格/型号/用户规格rb

FactoryBot.define do
  factory :user do
    name "Andy"
  end
end
require 'rails_helper'

RSpec.describe User, type: :model do

it "should be invalid without phone number" do
    user = build(:user)
    user.phone = nil
    expect(user).not_to be_valid
  end
end
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
require 'support/factory_bot'
...
...
spec/support/factory\u bot.rb

FactoryBot.define do
  factory :user do
    name "Andy"
  end
end
require 'rails_helper'

RSpec.describe User, type: :model do

it "should be invalid without phone number" do
    user = build(:user)
    user.phone = nil
    expect(user).not_to be_valid
  end
end
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
require 'support/factory_bot'
...
...
.rspec

--require spec_helper
--color
rails\u helper.rb

FactoryBot.define do
  factory :user do
    name "Andy"
  end
end
require 'rails_helper'

RSpec.describe User, type: :model do

it "should be invalid without phone number" do
    user = build(:user)
    user.phone = nil
    expect(user).not_to be_valid
  end
end
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
require 'support/factory_bot'
...
...
我正在运行bundle exec rspec spec/models/user_spec.rb

FactoryBot.define do
  factory :user do
    name "Andy"
  end
end
require 'rails_helper'

RSpec.describe User, type: :model do

it "should be invalid without phone number" do
    user = build(:user)
    user.phone = nil
    expect(user).not_to be_valid
  end
end
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
require 'support/factory_bot'
...
...
我尝试过的事情:

  • rails\u helper.rb
    下面的
    require'rspec/rails'
    行中添加了
    require'support/factory\u bot'
  • rails生成rspec:install
    (成功执行)
  • rspec--init(成功执行)
  • rake db:测试:准备(成功执行)
  • user\u spec.rb中的
    require'rails\u helper'
    更改为
    require'spec\u helper'
    ,但获得了错误名称error:uninitialized constant user after run
  • 以下是完整的跟踪:

    An error occurred while loading ./spec/models/user_spec.rb.
    Failure/Error: require 'rspec/rails'
    TypeError:
      wrong argument type Class (expected Module)
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract_controller/helpers.rb:181:in `include'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract_controller/helpers.rb:181:in `block in add_template_helper'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract_controller/helpers.rb:181:in `module_eval'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract_controller/helpers.rb:181:in `add_template_helper'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract_controller/helpers.rb:110:in `block in helper'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract_controller/helpers.rb:109:in `each'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract_controller/helpers.rb:109:in `helper'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/action_controller/railties/helpers.rb:17:in `inherited'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionview-5.0.6/lib/action_view/test_case.rb:11:in `<class:TestCase>'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionview-5.0.6/lib/action_view/test_case.rb:10:in `<module:ActionView>'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionview-5.0.6/lib/action_view/test_case.rb:8:in `<top (required)>'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
    # /Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
    # ./spec/rails_helper.rb:7:in `<top (required)>'
    # ./spec/models/user_spec.rb:1:in `require'
    # ./spec/models/user_spec.rb:1:in `<top (required)>'
    No examples found.
    
    
    Finished in 0.00789 seconds (files took 2.75 seconds to load)
    0 examples, 0 failures, 1 error occurred outside of examples
    
    加载时出错。/spec/models/user_spec.rb。
    失败/错误:需要“rspec/rails”
    类型错误:
    错误的参数类型类(应为模块)
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract\u controller/helpers.rb:181:in“include”
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract\u controller/helpers.rb:181:in`block in add\u template\u helper'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract\u controller/helpers.rb:181:in'module\u eval'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract\u controller/helpers.rb:181:in'add\u template\u helper'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract\u controller/helpers.rb:110:in`block in helper'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract\u controller/helpers.rb:109:in'each'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/abstract\u controller/helpers.rb:109:in'helper'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionpack-5.0.6/lib/action\u controller/railties/helpers.rb:17:在“继承”中
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionview-5.0.6/lib/action\u view/test\u case.rb:11:in`'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionview-5.0.6/lib/action\u view/test\u case.rb:10:in`'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/actionview-5.0.6/lib/action\u view/test\u case.rb:8:in`'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in`block in require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:259:in'load\u dependency'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in`block in require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:259:in'load\u dependency'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in`block in require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:259:in'load\u dependency'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in`block in require'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:259:in'load\u dependency'
    #/Users/Imi/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.6/lib/active\u support/dependencies.rb:293:in'require'
    #./spec/rails\u helper.rb:7:in`'
    #./spec/models/user_spec.rb:1:in'require'
    #./spec/models/user_spec.rb:1:in`'
    没有找到任何例子。
    完成时间为0.00789秒(文件加载时间为2.75秒)
    0个示例,0个失败,1个错误发生在示例之外
    
    我让它工作了

    除了一件事,所有的东西都在那。
    模块
    替换为
    我有一个
    和一个
    助手
    模块,这是导致错误的原因。刚刚用
    class
    替换了
    module
    ,现在它像黄油一样运行。

    请显示rails\u helper文件的内容。另外,完整的堆栈跟踪也会很有用。@moveson添加了rails\u helper.rb错误与哪一行有关?你能显示堆栈跟踪吗?@Imran在我的例子中,我创建了一个助手模块作为
    class
    ,而不是
    module