🖥

RSpec | context と example と all と each の違い

2023/08/26に公開

結論

  • 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オープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2018-07-15

Discussion