6

私のrspecテストは、ガードとスポークを使用しても非常に遅く実行されるようです。

Finished in 5.36 seconds
13 examples, 2 failures

テストを最適化し、データベースとの相互作用を減らすためにできることがいくつかあることを理解していますが、spec_helperが正しく設定されていないことを強く疑っています。私はモンゴイドでレール3.2.11にいます。データベースクリーナーは、実行するたびにクリーンアップします。

spec_helper.rb

require 'rubygems'
require 'spork'
Spork.prefork do
  ENV["RAILS_ENV"] ||= 'test'
  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'
  require 'rspec/autorun'
  require 'capybara/rspec'

  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
  DatabaseCleaner[:mongoid].strategy = :truncation

  RSpec.configure do |config|
    config.infer_base_class_for_anonymous_controllers = false
    config.order = "random"
    config.filter_run focus: true
    config.filter_run_excluding :remove => true
    config.run_all_when_everything_filtered = true
    config.include Mongoid::Matchers
    config.include Capybara::DSL
    ActiveSupport::Dependencies.clear
  end
end


Spork.each_run do
  Fabrication.clear_definitions
  RSpec.configure do |config|
    config.before(:each) do
      DatabaseCleaner.clean
    end
  end
end

更新:問題は私のテストの1つにありました。3秒かかっていました。以下の結果を得るために使用したコマンドについては、@SamPeaceyの回答を確認してください。

Dynamic Model should destroy collection when related source is destroyed
    2.46 seconds ./spec/models/dynamic_model_spec.rb:10
Dynamic Model Validations should validate uniqueness
    0.66357 seconds ./spec/models/dynamic_model_spec.rb:69
4

2 に答える 2

15

-p/--profileフラグを指定してrspecを実行することにより、仕様をプロファイリングできます。

rspec spec -p [-drb, and whatever else]

これにより、最も遅い10個の例とその実行時間が一覧表示されます。-pフラグにオプションのカウントを指定することにより、デフォルトの10を変更できます。を使用して詳細情報rspec --help

于 2013-03-18T08:28:26.937 に答える