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