2012-10-27 10 views
2

這樣一個RSpec測試(從RefineryCMS自己的測試套件實際採取)如何寫RefineryCMS控制器測試,而RoutingError

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 

module Refinery 
    describe FastController do 
    it "should render the wymiframe template" do 
     get :wymiframe 
     response.should be_success 
    end 
    end 
end 

導致以下錯誤:

Failure/Error: get :wymiframe 
ActionController::RoutingError: 
    No route matches {:controller=>"refinery/fast", :action=>"wymiframe"} 
# ./spec/controllers/fast_controller_spec.rb:6:in `block (2 levels) in <module:Refinery>' 

在這種情況下,我在Rspec 2.11中使用煉油廠2.0.8,運行耙路徑後的相關部分如下所示:

wymiframe GET  /wymiframe(/:id)(.:format)  refinery/fast#wymiframe 

我已經嘗試了一些其他控制器Rspecs,這些控制器Rspecs也失敗了路由錯誤。我當然試圖爲我自己的額外方法編寫測試,我正在爲香草煉油廠控制器添加額外的方法,但只是想我會看看我是否能夠進行控制器測試,爲完全新鮮的煉油廠安裝工作。

這一定是一個簡單的錯誤!有什麼建議麼?

回答

1

我偶然發現了這個。相反的:

get :wymiframe 

我需要使用:

get :wymiframe, { use_route: :any_old_thing } 

我不知道爲什麼這個工作 - 特別是因爲「any_old_thing」,我真的什麼都不使用或meaninful連接TOMY項目在所有。但是,它似乎有效,現在我可以測試我的控制器。

+1

任何人都可以解釋爲什麼這項工作? – jaydel

+0

我仍然在爲升級到RefineryCMS 2.1而苦苦掙扎 - 這已經使這個問題重新出現,我的舊「竅門」並不總是有效(但有時候......)。我認爲這與發動機和他們自己的路線有關,但我不確定 – charlesdeb

+0

升級到RefineryCMS 2.1後,我不得不再次爲此苦惱。我仍然不知道它爲什麼起作用(但並不總是)。最後,我通過從core/support/refinery.rb中添加一些refinerycms自己的配置來解決我的問題(因此不需要奇怪的黑客攻擊)。這些似乎給控制器規格提供了必要的路線。 – charlesdeb

相關問題