【发布时间】:2013-01-01 08:46:49
【问题描述】:
给定一个功能测试,例如:
def test_exciting_rails_upgrades
login(m=users(:manager))
post :import_users_map_fields, :csv_file => fixture_file_upload('/users.csv', 'text/csv')
assert flash.empty?
flash.discard
# other goodies omitted
end
在 Rails 2.3.2 中没有错误,但是在 2.3.15 中,错误是:
NoMethodError: {}: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,因此不能对其调用 discard。
其他人可以使用 2.3.15 和 flash.discard 重现此错误吗?
【问题讨论】:
-
可能是定义 ActionController::TestRequest#flash 的方式导致测试中出现此问题,但此代码在 2.3.2 和 2.3.15 中是相同的:def flash session['闪'] || {}结束
标签: ruby-on-rails hash actionpack rails-flash