Ruby on rails 在测试期间更新轨道固定装置
我在Rails中进行了功能测试(这是一个Redmine插件),这给我带来了问题:Ruby on rails 在测试期间更新轨道固定装置,ruby-on-rails,redmine,redmine-plugins,Ruby On Rails,Redmine,Redmine Plugins,我在Rails中进行了功能测试(这是一个Redmine插件),这给我带来了问题: fixtures :settings test 'error is shown on issues#show when issue custom field is not set up' do setting = settings(:release_notes) setting.value = setting.value. update('issue_required_field_id' =>
fixtures :settings
test 'error is shown on issues#show when issue custom field is not set up' do
setting = settings(:release_notes)
setting.value = setting.value.
update('issue_required_field_id' => 'garbage')
#setting.save!
get :show, :id => '1'
assert_response :success
assert_select 'div.flash.error',
:text => I18n.t(:failed_find_issue_custom_field)
end
设置模型有字段名称
和值
;在此特定设置中,该值是序列化的哈希。此哈希中的一个键是issue\u required\u field\u id
,用于在显示操作期间查找特定的IssueCustomField
。如果没有具有此ID的自定义字段(不应该有,因为我已将其设置为字符串“垃圾”),那么它应该呈现div.flash.error来解释发生了什么
不幸的是,setting.save代码>被注释掉,测试失败,因为设置似乎没有更新——使用了该设置的工作值(如settings.yml中所示),并且没有出现“div.flash.error”。如果我取消注释它,这个测试通过,但是其他测试失败,因为在测试结束时没有回滚更改
有没有一种方法可以像这样修改夹具,以便在测试结束时回滚任何更改
注意:self.use\u transactional\u fixtures
在ActiveSupport::TestCase
中被明确设置为true(这个测试用例是一个ActionController::TestCase
,它是一个子类)我知道了发生了什么——测试实际上是事务性的,但Redmine的设置类有自己的缓存。正在添加Setting.clear\u缓存代码>到测试的设置
修复了它