給定一個功能測試如錯誤是:`flash.discard`在滑軌2.3失敗,因爲閃光燈是一個哈希,而不是一個FlashHash
NoMethodError: undefined method `discard' for {}:Hash /test/functional/broken_upgrades.rb:119:in `test_exciting_rails_upgrades'
爲什麼flash
一個Hash
類,而不是一個FlashHash
?
從源代碼看來,它看起來像2.3.2和2.3.15 ActionPack文件lib/action_controller/flash.rb
創建FlashHash
類並繼承自Hash
。然而,在2.3.2和2.3.15中的功能測試中顯示的是Hash
類,而不是HashFlash
,所以不能在其上調用放棄。
其他人可以用2.3.15和flash.discard
重現此錯誤嗎?
它可能是ActionController :: TestRequest#flash被定義爲在測試中導致此問題的方式,但此代碼在2.3.2和2.3.15中都是相同的: def flash session ['flash'] || {} 結束 –