在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
之外,它们没有任何特别之处。在命令行上。
这些天,我将类似的内容添加到我的 .rspec
文件:
-I app/mercury_app
然后我可以做简单的require 'object_name'
在我的规范的顶部。
至于不包括spec_helper
: 是真的,我没有。当您使用 rspec <path_to_spec_file>
执行规范文件时,它会被解释,所以你不需要要求 rspec
明确地。
这些天对于我的数据库规范,我还构建了一个 active_record_spec_helper
这需要 active_record,建立到测试数据库的连接,并设置 database_cleaner
;这让我可以简单地在我的规范文件的顶部要求我的模型。这样,我就可以针对数据库测试 AR 代码,而无需加载我的整个应用程序。
我在使用这些技术的地方工作的客户有兴趣支持一些关于此的博客文章,因此希望他们能在 6 月中旬开始发布。
关于ruby-on-rails - Corey Haines 在 GoGaRuCo 2011 上使用了哪些测试工具和方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726912/