2010-08-08 56 views
8

我試着使用推薦的方法(來自Rails指南)來測試插件中生成的路由,但測試仍然失敗。如何在Rails 3插件中測試路由?

奇怪的是,如果我在創建路線後(或者我認爲)重新加載了路線,測試失敗了,但是如果我讓測試通過一次(例如使用自動測試),那麼路線在後續嘗試。

下面的代碼:

describe "named route report_with_last_name_smith_path" do 
    before :all do 
    Reports::Application.routes.draw do 
     match "/report_some_report_for_us" => "report#report_some_report_for_us", 
       :as => :report_some_report_for_us 
    end 
    Rails.application.reload_routes! # If I leave this out, then the test 
            # passes the second time that autotest/autospec 
            # go through. 
    end 
    it "route for every record" do 
    {:get => '/report_some_report_for_us'}.should route_to(:controller => 'report', :action => 'report_some_report_for_us') 
    end 
end 

不知道如何讓它通過所有的時間?

+0

你可能會寫出測試失敗的錯誤嗎? – khebbie 2010-08-12 05:23:47

+0

如果在應用程序執行期間運行相同的reload_routes函數,路由是否工作?也就是說,如果您只是在開機模式下插入該行,它會起作用嗎? – jasonpgignac 2010-08-15 16:57:11

回答

1

嗯。針對rails-3的rspec-rails-2的自述文件在http://github.com/rspec/rspec-rails有一個「路由規範」部分。最新的RSpec可能不需要before :all,也許?

+0

謝謝埃德,但我正在查看通過插件和插件方法生成的路由,而不是通過應用程序中的routes.rb文件。 – btelles 2010-10-05 15:40:49