rspec共有例にパラメータを渡す 質問する

rspec共有例にパラメータを渡す 質問する

rspec を使用して有効性をテストしたい結果セットを返すプロセスがあります。プロセスはパラメータに基づいて異なる結果を返しますが、それらすべてに共通する例が多数あるため、それらすべてに対して実行できる共通の例のセットを作成したいと思います。

結果を構築するには let を使用するのが望ましい方法であることはわかっています。問題は、各プロセスで結果を生成するのに 1 ~ 2 分かかり、おそらく 30 個の例があることです。さまざまなパラメーターに基づくすべての組み合わせで、約 500 個の例を実行しています。各例の結果を再構築する必要がある場合、テストの実行には 1 日以上かかります。

代わりに、before(:all) ブロックで結果を構築し、次のように属性に割り当てます。

RSpec.describe 'Test Description' do
  attr_reader :result

  before(:all)
    @result = build_result({some_parameters})
  end

  context 'Some context' do
    it 'Looks lik a result' do 
      expect(result.something).to ...
    end

    it 'Feels lik a result' do 
      expect(result.something).to ...
    end
  end
end

属性を使用するよりも良い方法があるかもしれません。次のようなことをしたいです:

RSpec.describe 'Test Description' do
  attr_reader :result

  before(:all)
    @result = build_result({some_parameters})
  end

  context 'Some context' do
    it_behaves_like "A result" result
  end
end

このコンテキストで属性を使用すると失敗します。別の方法はありますか?

ベストアンサー1

次のように共有例に引数を渡すことができます。

shared_examples_for "A result" do |argument|
 # some tests with argument
end

そして、my_argument次のように渡します。

it_behaves_like "A result", my_argument

おすすめ記事