ruby-on-rails – Rails 3.0.7 – >你如何让你的测试运行得更快?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails 3.0.7 – >你如何让你的测试运行得更快?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行MysqL,database_cleaner,Rspec等.到目前为止,我已经有大约518个测试,并且运行了88秒.这是我不能接受的,因为我的应用程序开发刚刚开始.

所以在进一步之前,我想尝试找到方法来减少运行这些测试所需的时间 – 希望无需实际更改测试.@H_404_3@

在大多数情况下,我试图使用存根.但是,当我测试模型和查询时,我使用数据库.@H_404_3@

我认为database_cleaner正在放慢速度,但我不知道如何测试查询和没有它的东西.@H_404_3@

使用sqlite3与“:memory:”选项似乎只能刮掉约10秒(令人失望的结果…)@H_404_3@

我能做些什么来真正加快测试速度?@H_404_3@

解决方法

您可以使用多种策略来加快测试时间.如果你刚刚开始,你看到一个88秒的运行时间,我会想到很多这些适用于你:

>使用spork – Spork将执行所有的引导和环境需要一次,将其保存在内存中,只重新加载测试.快速运行测试可能是一个巨大的帮助.聪明的测试 – 个人来说,我的工作流程是开发测试,运行完整的测试套件来查看失败,然后只运行新的/失败的测试,直到我能得到这些绿色.最后,当我完成我最后一次运行套件,看看我是否倒退了别的东西.清理你的宝石文件 – 大部分的Rails启动时间花在了需求上,如果你有宝石,你再也不用了,你加载时间就没有任何好处.取出你没有使用的任何东西,并考虑将东西仅用于一个或两个点在命名组中,以便您可以在执行期间手动要求它们(请注意,您正在交易请求性能的初始加载速度,对于开发人员来说是非常棒的,但是对于生产来说很糟聪明地了解什么是存根和模拟 – 如果你真的在做单元测试,例如,你应该避免触摸数据库,或者至少是你的控制器测试.想想课堂的责任究竟是什么.控制器不负责保存记录,负责告诉模型保存记录.即使模型不负责保存数据库中的东西,他们负责告诉ActiveRecord.>如果你把东西很好地保留下来,请考虑不包括Rails.您将需要将几乎所有的ActiveRecord功能都放在测试中,但是如果可以这样做,您将看到测试时间大大减少(可能超过一个数量级).@H_404_3@

原文链接:https://www.f2er.com/ruby/273596.html

猜你在找的Ruby相关文章