如何发现为什么RSpec需要这么长时间才能启动?

时间:2019-04-20 13:03:04

标签: ruby-on-rails rspec rspec-rails rspec3

我知道有一种方法可以知道哪些规范花费的时间最多,但是我怀疑是RSpec的加载。规范本身并不需要花费太多时间,但负担却很大。
有办法发现吗?
我正在研究Rails的旧代码,但我不知道哪个gem可能会影响它。

2 个答案:

答案 0 :(得分:0)

可能是特定于应用程序的(例如,要加载的宝石数量)。要大大加快Rspec的加载时间,可以使用spring-commands-rspec,它为Spring(Rails应用程序预加载器)实现了rspec命令,例如:

在您的gemfile中,添加:

gem 'spring-commands-rspec', group: :development

然后运行:bundle install,最后运行:

bundle exec spring binstub rspec

在此过程之前和之后运行Rspec,您应该会看到巨大的进步。

更多信息在这里:

https://github.com/jonleighton/spring-commands-rspec https://schwad.github.io/ruby/rails/testing/2017/08/14/50-times-faster-rspec-loading.html https://www.netguru.com/blog/9-ways-to-speed-up-your-rspec-tests

答案 1 :(得分:0)

对于任何来这里的人来说,问题在于每次我运行测试时RSpec都会被截断。
我通过在日志启动时检查日志来发现它(tail -f log/test.log)。
为了解决这个问题,我使用了database_cleaner gem并将其配置为:transaction作为清理策略。

config.before(:each) do
    DatabaseCleaner.strategy = :transaction
end