在
this video from GoGaRuCo 2011年,Corey Haines展示了一些使Rails测试套件更快的技术.我总结如下:
>将尽可能多的代码放在Rails应用程序之外,放入其他模块和类中
>单独测试,无需加载Rails的开销
>在Rails应用程序中使用它们
但是有几件我不明白的事情.
>他在使用rspec和spn或spna运行测试之间交替(例如,在大约3:50). spn是一个众所周知的工具吗?
>在他对非Rails类和模块的测试中,他包括正在测试的模块或类,但我没有看到他包括像spec_helper这样的东西.他如何获得Rspec?
解决方法
对此感到抱歉. spn和spna是别名我将我的非rails代码添加到rspec的加载路径.除了在命令行中添加-I path_to_code之外,它们没有任何特殊之处.
-I app/mercury_app
然后我可以在我的规范的顶部做简单的require’object_name’.
至于不包括spec_helper:这是真的,我没有.当您使用rspec< path_to_spec_file>执行spec文件时,它会被解释,因此您不需要显式地要求rspec.
对于我的db规范这些天,我还构建了一个active_record_spec_helper,它需要active_record,建立与test数据库的连接,并设置database_cleaner;这允许我只需要我的模型在我的spec文件的顶部.这样,我可以针对数据库测试AR代码,而无需加载我的整个应用程序.