7

GoGaRuCo 2011 的这段视频中,Corey Haines 展示了一些使 Rails 测试套件更快的技术。我将其总结如下:

  • 将尽可能多的代码放在 Rails 应用程序之外,放入其他模块和类中
  • 单独测试这些,没有加载 Rails 的开销
  • 在 Rails 应用程序中使用它们

不过,有几件事我不明白。

  • 他交替使用rspecspn或运行测试spna(例如,大约在 3:50)。是spn一种众所周知的工具吗?
  • 在他对非 Rails 类和模块的测试中,他包含了正在测试的模块或类,但我没有看到他包含类似spec_helper. 他如何获得 Rspec?
4

1 回答 1

19

很抱歉造成混乱。spn并且spna是我将我的非 Rails 代码添加到 rspec 的加载路径的别名。-I path_to_code除了在命令行上添加 a 之外,它们并没有什么特别之处。

这些天来,我在我的文件中添加了这样的.rspec内容:

-I app/mercury_app

然后我可以require 'object_name'在我的规格顶部做简单的事情。

至于不包括spec_helper:这是真的,我没有。当您使用 执行规范文件时rspec <path_to_spec_file>,它会被解释,因此您不需要rspec明确要求。

这些天来,对于我的数据库规范,我还构建了一个active_record_spec_helper需要 active_record,建立到测试数据库的连接,并设置database_cleaner;这让我可以在我的规范文件顶部简单地要求我的模型。这样,我可以针对 db 测试 AR 代码,而无需加载我的整个应用程序。

我在使用这些技术的地方工作的客户有兴趣支持一些关于此的博客文章,因此希望它们将在 6 月中旬开始发布。

于 2012-05-23T20:50:05.837 回答