我认为运行我的 gem 测试的虚拟应用程序设置不正确,因为当我url_for
在 gem 的帮助程序中调用 Gadget 实例(来自虚拟应用程序的存根模型)时,我得到
undefined method `gadgets_path' for #<#<Class:0x007fe274bc1228>:0x007fe273d45eb0>
背景:我分叉了一个 gem 并进行了一些重大更改。(这是叉子。)现在我正在尝试使 rspec 测试正常工作,以便我可以验证我的更新。
测试的设置类似于 Rails 引擎,spec
目录中有一个虚拟应用程序。该应用程序有一个模型 ( Gadget
) 具有适当的控制器和spec/dummy/environment/routes.rb
文件中声明的资源:
Dummy::Application.routes.draw do
resources :gadgets
end
该spec/spec_helper.rb
文件如下所示:
ENV["RAILS_ENV"] ||= "test"
require File.expand_path("../dummy/config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
RSpec.configure do |config|
config.mock_framework = :rspec
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
config.include Rails.application.routes.url_helpers
end
(实际上,您可以在项目的 github 存储库中看到完整的测试设置。我实际上在一周左右之前为此打开了一个问题,但直到现在我才开始尝试解决它。)
一个未挂起的测试会创建一个 Gadget 实例,然后以它作为参数调用助手。当助手尝试url_for(@gadget)
时,它会触发上述错误。
这里有什么问题?
ETA 12 月 4 日:更新为当前的spec_helper.rb
.