🖥
RSpec | context と example と all と each の違い
結論
- context と all は同じ
- example と each は同じ
(調べるまでallとcontextは別だと思いこんでいた)
ヒント
Relishには「どちらでも好きな方を使えば良い」と書いてあるが、新しい方の記法 context
/ example
に揃えておいた方が、分かりやすいし無難だろう。
しmockには example
しか使えないようなので注意。
WARNING: Mocks are only supported in before(:example).
動作確認のコード例
# https://relishapp.com/rspec/rspec-core/v/3-7/docs/hooks/before-and-after-hooks
RSpec.configure do |config|
config.before :context do
puts 'before context'
end
config.before :example do
puts 'before example'
end
# Note: the :example and :context scopes are also available as :each and :all, respectively. Use whichever you prefer.
# Same as context
config.before :all do
puts 'before all'
end
# Same as example
config.before :each do
puts 'before each'
end
end
RSpec.describe do
subject { true }
describe do
it { is_expected.to be true }
it { is_expected.to be true }
end
describe do
it { is_expected.to be true }
it { is_expected.to be true }
end
end
実行例
$ bundle exec rspec -fd rspec/before_hooks.rb
before context
before all
before example
before each
should equal true
before example
before each
should equal true
before example
before each
should equal true
before example
before each
should equal true
Finished in 0.00986 seconds (files took 0.29761 seconds to load)
4 examples, 0 failures
Gist
参考
環境
- ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
- rspec-core 3.7.1
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2018-07-15
Discussion