Вам не нужно явно проверять вложенные выражения if. Когда вы пишете тест, вы тестируете код в целом. В этом случае у вас есть 3 возможных маршрута, по которым может идти код, и в этом случае вы бы написали 3 теста.
Один тест удовлетворял бы (array1 & array2).any? && !array2.include?('c')
, второй тест удовлетворял бы (array1 & array2).any? && array2.include?('c')
, а третий тестбудет удовлетворять (array1 & array2).empty?
Так, например ...
def my_function(array1, array2)
if (array1 & array2).any?
if !array2.include? 'c'
'yes'
else
'no'
end
else
'neither'
end
end
RSpec.describe 'MyFunction' do
context 'array has c' do
it 'should return no' do #
expect { my_function(['b'], ['b']) }.to eq("no")
end
end
end