分享 鼓捣一下更快速的 model unit tests

fredwu · 2011年12月09日 · 最后由 ashchan 回复于 2012年02月04日 · 2851 次阅读

在 rails 里写 unit tests,最大的一个问题就是速度。大部分情况下不管是用 ActiveRecord 也好还是其他的 ORM 也好,加载整个 rails 环境用时太久,导致更少人使用 TDD。

我开始鼓捣把 ORM 那层给分离出去。这个话题其实很久前就有很多人提过了,比如 Corey Haines 的演讲:http://confreaks.net/videos/641-gogaruco2011-fast-rails-tests

我刚开始鼓捣,不过理想中,我希望可以把一些东西给 gem 化,这样以后的项目只要加个 gem 就可以这么用。。。

Model 文件:

1.9.2 下的测试速度对比:

抛砖引玉~

效果好明显

如果是这样,那不是要复制每个 Model 的代码出来? 瞎扯一下,Sublime Text 的 UI 太丑

我的目标是看看能否把所有的 AR 操作都放到一边,但仍然让 model 保持原有的 API。

P.S. Sublime 的 UI 的确是……咳咳……

期待!在 mongoid 也有效嗎?

@huacnlee 我看了视频,核心意思就是把 methods 独立出一个 module,放在 lib 目录。哪里需要就 indclude 哪里。 测试根本就会数据库无关,你把整个 ActiveRecord 放到内存没有作用,只是给你更多的等待。5 秒。10 秒。 比如测试时,就挂上一个空的 Dummy Class 就可以测试方法对不对了。因为你测试的就是那个 methods 到底对不对。

匿名 #6 2012年01月10日

#2 楼 @huacnlee 还行吧,比我的 ultraedit 好多了,哈哈哈哈哈,他的好歹还能分出颜色来。

我的做法是,把一些方法写入 module, 写一个不 load rails enviroment 的 rspec_helper

没人用 spork + guard 的吗?

#9 楼 @flyerhzm 很多人用。

没有人用跑 bundle 和 rspec 的时间去冲咖啡吗?lol!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号