蕲春人的博客

About Blog Email GitHub

19 Apr 2011
最近实践中学到的Rails测试技巧

最近花时间又将项目中的测试再次仔细地过了一遍。通过挖掘发现了几个提高测试效率的技巧,记一下。 不学习就要落后啊,Ruby的世界进化得太快了,测试技术也是如此。

  • FactoryGirl这个东西好用级了,之前虽然已经在项目中使用她了,但我之前还是没有完全挖掘出她的特性。对其中的association这个特性我是最喜欢了,让我完全不用关注关联记录的外键数据对应。想起曾经的Rails自带的Fixtures,还阵阵寒,那是给人给的东西么。当应用中的数据表关联多了,再加上业务功能多了,用Fixtures测试绝对会折磨死人,在不同的Fixtures文件中穿梭,人肉拼装适合各种业务场景的数据,那真费脑细胞。而FactoryGirl真的是用起来称心如意啊,她不是数据的fixture,她应该是作为一种数据的构建器(data builder),在测试中可以让你专注去构建 测试场景的数据和写测试断言。

  • 自动测试gem: autotest. 我和同事之前商量约定好,说提交代码前一定先在本地运行一遍rspec测试,然后再提交。这样工作得很好。我今天研究了一下autotest这东西,发现真是好东西啊。它可以检测到你改动了某个文件,然后就自动地为你执行一次这个文件关联的测试。这可好了,又省了不少事。

  • 接第二条,比起自动监测改动的文件自动测试,你还得关心测试的结果,更好的是有自动通知测试结果的好工具。mac下的 growl 就是这样一个工具。autotest-growl这样的一个Gem很好的做了这个事情。你再不不用切换到测试的终端窗口去查看测试结果,你只需要专心地写着代码,然后屏幕边上会自动显现一个半透明的提示框来告知测试结果(最喜欢看到就是一个绿宝石的提示框)。当然这个工具只有在Mac OSX上才有的。

  • 测试不是很快,这个也有解决方法。Spork就是这样的一个工具,它事先启动一个后端的DRB服务器(端口8989),加载Rails应用的环境。然后每次rspec的测试可以直接与spork打交道,省了加载Rails应用环境这个比较耗时的步骤,直接运行测试用例,速度飞快。


蕲春人 at 23:12

scribble

About Blog Email GitHub