web-dev-qa-db-ja.com

RSpecでは、before(:suite)とbefore(:all)の違いは何ですか?

Relishのbeforeおよびafterフックのドキュメント は、before(:suite)の前にbefore(:all)が呼び出されることのみを示しています。

いつどちらを使用すればよいですか?

43
Mark Rushakoff

before(:all)が_RSpec.configure_ブロックで定義されると、各最上位のサンプルグループの前に呼び出されますが、before(:suite)コードブロックは1回だけ呼び出されます。

次に例を示します。

_RSpec.configure do |config|
  config.before(:all) { puts 'Before :all' }
  config.after(:all) { puts 'After :all' }
  config.before(:suite) { puts 'Before :suite' }
  config.after(:suite) { puts 'After :suite' }
end

describe 'spec1' do
  example 'spec1' do
    puts 'spec1'
  end
end

describe 'spec2' do
  example 'spec2' do
    puts 'spec2'
  end
end
_

出力:

_Before :suite
Before :all
spec1
After :all
Before :all
spec2
After :all
After :suite
_
73
Leo

Before(:suite)を使用して、サンプルグループを実行する前にコードブロックを実行することもできます。これはRSpec.configureで宣言する必要があります

http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/Hooks

0
denis.peplin