RSpec 嵌套 if 函数

RSpec nested if function

我是 RSpec 的新手,我正在尝试进行测试,但我不知道如何处理嵌套 if。我希望你能帮助我。谢谢!

array1 = %w[a b]
array2 = %w[aa b c]
@a = if (array1 & array2).any?
       if !array2.include? 'c'
         'yes'
       else
         'no'
            end
     else
       'neither'
     end
puts @a

我想使用 RSpec 为我的代码开发一个基本测试。我的代码运行完美我只是不知道如何编写测试。

您不需要显式测试嵌套的 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