我在代码中的几个地方使用了after_commit过滤器。为了让我的黄瓜测试工作,我不得不使用补丁 - http://outofti.me/post/4777884779/test-after-commit-hooks-with-transactional-fixtures
在独立运行或在自动测试下运行时,它在本地运行良好。我也尝试在Jenkins下运行测试,但几乎所有测试都失败并出现以下错误消息。
can't dump File (TypeError)
/var/lib/jenkins/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/monitor.rb:242:in `synchronize'
./features/support/after_commit_monkey_patch.rb:20:in `transaction'
./features/support/after_commit_monkey_patch.rb:18:in `transaction'
任何人都可以帮我弄清楚发生了什么事吗?我很困惑为什么相同的代码在一种情况下工作而不是另一种情况。使用RVM等环境尽可能相同。
谢谢, 格雷姆
答案 0 :(得分:1)
经过一些搜索(并感谢Andy的线索)它与猴子补丁没有任何关系 - 它只是报告问题。
我将测试集的缓存设置为......
config.cache_store = nil
我把它改成了......
config.cache_store = :dalli_store, { :namespace => "TEST" }
...相反,它现在无故障运行。它仍然没有解释为什么我的测试在本地工作,但没有在Jenkins下使用nil缓存。
答案 1 :(得分:1)
将此修补程序转换为gem test after_commit以获得改进的共同点,并添加测试以查看它适用于所有rails版本