2009-06-17 92 views
3

我試圖寫在我的Rails應用程序的一些功能測試,並在application_controller.rb我有這樣的:如何在Rails中存根或模擬request.subdomains方法?

before_filter :current_account 
def current_account 
    @current_account ||= Account.find_by_subdomain!(request.subdomians.first) 
end 

在運行測試,request.subdomains不包含我在尋找有效的子域和使得不可能運行任何功能測試。

是否有可能存根current_account方法或模擬request.subdomains對象?

回答

5

在您的功能性測試,你應該能夠(使用摩卡)做:

@request.expects(:subdomains).returns(['www']) 
1

,我(和使用Rails 2.3.4),正確的說法是

@controller.request.expects(:subdomains).returns(['www']) 

,因爲我無法直接訪問@request。

1
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'})) 

您可以在紅寶石訪問任何:)

相關問題