Mam proces, który zwraca zestaw wyników, który chcę przetestować pod kątem ważności przy użyciu rspec. Proces zwróci różne wyniki w oparciu o parametry, ale istnieje wiele przykładów, które są wspólne dla wszystkich z nich, dlatego chciałbym stworzyć zestaw typowych przykładów, które można wykorzystać na wszystkich.Przekazywanie parametrów do wspólnego przykładu rspec
Wiem, że preferowaną praktyką jest użycie let do zbudowania wyniku. Problem polega na tym, że każdy proces zajmuje minutę lub dwie, aby wygenerować wynik i mam prawdopodobnie 30 przykładów. Przy wszystkich permutacjach opartych na różnych parametrach używam około 500 przykładów. Jeśli musiałbym przebudować wynik dla każdego przykładu, test trwałby więcej niż jeden dzień.
Zamiast więc buduję skutkować przed (: all) bloku i przypisanie go do czegoś atrybut tak:
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
Może istnieje lepszy sposób niż za pomocą atrybutu. Chcę zrobić coś takiego:
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
Użycie atrybutu w tym kontekście kończy się niepowodzeniem. Czy jest inny sposób na zrobienie tego?
Nie tego oczekiwałem, ale jest to jak dotąd najlepsza odpowiedź. –