搜索此问题只会导致其他人处理的特定宝石或类的问题。就我而言,我认为一般来说rspec有问题。
每当我使用rails generate ControllerName
生成一个控制器时,它会设置所有内容并且事情似乎正常。我已经开发了一些控制器并在开发和生产中进行了测试,一切正常。
唯一似乎被打破的是用rspec测试它们。现在我的项目中有两个控制器,每当我运行rspec / spec时,rails g
生成的大多数规范都会出现这个错误:
NoMethodError:
undefined method `setup' for RSpec::ExampleGroups::MoreStuffHere
例如,我有一个WelcomeController和ApplicationsController,这些是我不断得到的错误:
undefined method `setup' for RSpec::ExampleGroups::ApplicationsController:Class
undefined method `setup' for RSpec::ExampleGroups::WelcomeController:Class
undefined method `setup' for RSpec::ExampleGroups::WelcomeAboutHtmlErb:Class
undefined method `setup' for RSpec::ExampleGroups::WelcomeIndexHtmlErb:Class
有趣的是,我的helper_spec
如果有帮助,这是一个完整的错误:
An error occurred while loading ./spec/controllers/applications_controller_spec.rb.
Failure/Error:
RSpec.describe ApplicationsController, type: :controller do
end
NoMethodError:
undefined method `setup' for RSpec::ExampleGroups::ApplicationsController:Class
# ./spec/controllers/applications_controller_spec.rb:3:in `<top (required)>'
有谁知道这个问题可能在哪里?
答案 0 :(得分:0)
在spec_helper.rb
我有
require File.expand_path("../../config/environment", __FILE__)
require 'rails/all'
RSpec.configure do |config|
# More code here.
end
我所要做的就是在require 'rspec/rails'
下添加require 'rails/all'
。这解决了我的问题。
然而,我不知道为什么。如果有人可以详细说明这将是伟大的。我require 'rspec/rails'
已经rails_herlper.rb
,但显然不够好。
答案 1 :(得分:0)
恕我直言,这里的解决方案有点像达米安·里瓦斯(Damian Rivas)在那所说的,但重要的是:
require 'spec_helper'
config.include Devise::Test::ControllerHelpers, type: :controller
rspec/rails
要求输入行主要要点是,您必须在此处查看订单...始终包括rspec/rails
,必须先于spec_helper
所以可以说示例spec_helper.rb
如下:
require 'rubygems'
Rspec.configure do |config|
config.include Devise::Test::ControllerHelpers, type: :controller
end
然后我们的rails_hepler.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'
然后在sample_spec.rb
中,您需要rails_helper
,或者就我而言,我需要通过.rspec
,所以我不必在每个规范中都放它。
希望对别人有帮助:)