我認爲我的寶石測試用於運行的虛擬應用程序設置不正確,因爲當我在Gadget實例(來自虛擬應用程序的存根模型)上調用url_for
時,創業板的助手裏,我得到寶石測試無法找到使用url_for的路線
undefined method `gadgets_path' for #<#<Class:0x007fe274bc1228>:0x007fe273d45eb0>
背景:我分叉寶石並提出了一些顯著的變化。 (Here's the fork。)現在我試圖使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
(實際上,你可以看到完整的測試在the project's github repo設置。我實際上打開an issue這一個星期前,但只有現在我四處尋求解決它。)
這是一個測試是不等待創建一個Gadget實例,然後以此作爲參數調用幫助器。當助手嘗試url_for(@gadget)
時,會觸發上述錯誤。
這裏有什麼問題?
ETA Dec 04:更新爲當前的spec_helper.rb
。
這看起來很有希望,當我進入虛擬應用程序並使用Rails控制檯時,我可以戳出該對象並獲取路徑。但是,它不允許測試運行。我已經用你的建議更新了上面的'spec_helper.rb'代碼。 (它也在Github上更新。) – pjmorse
我更新了答案以反映我的最新努力 – krichard
您對「真正的問題」絕對正確,而且它本身解決了問題。 – pjmorse