首页 > 解决方案 > RSpec 嵌套 if 函数

问题描述

我是 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 为我的代码开发一个基本测试。我的代码运行完美我只是不知道如何编写测试。

标签: rubyrspec

解决方案


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

推荐阅读