rails undefined method `use_transactional_fixtures=' 错误的解决
最近新建立了一个rails project 想尝试一下test driven 开发, 于是就呼啦呼啦写了几个测试, 这个时候怪异的事情发生了 使用rake 调用测试或者直接执行ruby测试程序, 都会报如下错误
undefined method `use_transactional_fixtures='
真是非常莫名奇妙, 尝试检查mysql, 检查表类型都没有问题(innodb), 又进一步检查, 发现我的testcase实际上没有被注入rails的扩展, 全部变成了最普通的testcase, 真是郁闷! 当晚上google查了半天, 也没有解决
第二天上线咨询了cookoo 以后, 再度测试了一番, 发现新建立的rails project没有这个问题, 于是怀疑到安装的plugin有问题, 又把plugin全部删除, 问题依旧...(中间省略若干) ... 终于发现,原来是ZenTest 这个gem包导致, 尝试把ZenTest/test/test_help.rb 这个文件移走, 问题解决
接下来分析原因 , 发现我的project用到了cached_model , cached_model 会引入ZenTest, ZenTest中的test_help.rb和rails中的test_help.rb 重名, 由于cached_model 会先载入, 所以ZenTest把后者的test_help覆盖掉, 直接导致rails的环境无法加载
ZenTest(test_help.rb) Rails(test_help.rb) 两者无法共存,所以移走前者就好了