我的控制器訪問上傳文件的tempfile
屬性並將其傳遞給另一個模擬組件。我的測試代碼有在Rails 3.1控制器測試中模擬文件上傳
@file = mock(Object)
@file.stub_chain(:tempfile, :path).and_return('thefile.zip')
# ...
post :create, :file => @file
和控制器代碼調用params[:file].tempfile.path
。
從滑軌升級3.0〜3.1後,將上述線開始使用
undefined method `tempfile' for "#[RSpec::Mocks::Mock:0x2b0d9a0 @name=Object]":String
即失敗,Rails的3.1自動轉換params[:file]
爲字符串。
當通過瀏覽器手動測試時,代碼正常工作。我試圖使用fixture_file_upload
並且參數變成了File
對象,但它沒有tempfile
方法。
那麼如何將任意模擬對象作爲參數傳遞給Rails 3.1中的一個動作?
你拉似乎一直合併,但從Rails 3.2.13rc2開始,使用機架測試0.6.2,我還是不得不使用@ mpartel的解決方法,在 – SciPhi 2013-03-08 16:55:16
之上獲得包含此修復的版本的任何機會? – sevenseacat 2013-06-19 08:09:58