2009-02-19 109 views
2

我測試這樣我軌輔助方法:測試輔助方法Rails中

require File.dirname(__FILE__) + '/../../test_helper' 
require 'action_view/test_case' 
require 'action_view/helpers' 

class ListingsHelperTest < ActionView::TestCase 

    def setup 
    @controller = ListingsController.new 
    @request = ActionController::TestRequest.new 
    @response = ActionController::TestResponse.new 
    end 
end 

這個偉大的工程,除非該調用助手在需要的請求已經發生的方法,如url_for 。由於我不想通過請求過程來運行整個堆棧以測試這些堆棧(例如,通過調用get:index),因此需要初始化或刪除這些內容才能起作用?

我正在尋找一個更通用的解決方案,以嘲笑的請求,但具體而言,我得到的錯誤是這樣的:

NoMethodError: You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.rewrite 
rails/actionpack/lib/action_controller/base.rb:625 
rails/actionpack/lib/action_view/helpers/url_helper.rb:85 
rails/actionpack/lib/action_view/helpers/url_helper.rb:85 

回答

4

我認爲:

include ActionView::Helpers::UrlHelper 
include ActionController::UrlWriter 

可能有幫助?

+0

這是門票,謝謝!我也剛剛意識到這種技術可能會在rails自己的幫助程序測試中可見,對嗎? – 2009-02-22 01:35:23