2012-02-20 3 views
0

私は/ spec/supportディレクトリに共有コンテキストを持っています。これは、それを含むものだけでなく、すべての例で今呼び出されています。サポートディレクトリについて特別なことはありますか?また、すべての例でそれを実行したくない場合はどこに置くべきですか?ここですべての例がサポートディレクトリの共有コンテキストに呼び出されましたか?

は、コンテキスト・ファイルです:(各)

require 'spec_helper' 

shared_context "timeout context", :timeout do 

    around(:each) do |example| 
    timeout = example.metadata[:timeout] || 1.second 
    Rails.logger.debug "timeout #{timeout} sec for: #{example.metadata[:example_group][:file_path].gsub(/.*?\/spec\//, '')}" 
    Timeout::timeout(timeout) { 
     example.run 
    } 
    end 

end 

は周りに多分関連し、この問題ですか?

答えて

0

周りのブロックのような少しは犯人であるようですので、私は、フォルダ/ RSpecの/サポート/内のファイルに次を追加しました:

RSpec.configure do |config| 
    config.around(:each) do |example| 
    if (example.metadata[:timeout]) 
     timeout = example.metadata[:timeout] || 1.second 
     Rails.logger.debug "timeout #{timeout} sec for: #{example.metadata.full_description}" 
     Timeout::timeout(timeout) do 
     example.run 
     end 
    else 
     example.run 
    end 
    end 
end 

として、今、私のコール仕様:

describe 'explicit timeout of 5 seconds', :timeout => 5.seconds do 
end 
describe 'implicit timeout of 1 second', :timeout do 
end 
describe 'no timeout' do 
end 
関連する問題