ruby - 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 为我的代码开发一个基本测试。我的代码运行完美我只是不知道如何编写测试。
解决方案
您不需要显式测试嵌套的 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
推荐阅读
- heroku - 部署成功后网站不会重新部署,如何解决?
- python - django collectstatic 'AppConfig' 对象没有属性 'ignore_patterns'
- python - 如何删除str。列表中的空格
- python - 如何将此快速排序 Python 实现转换为等效于 Numpy 的 argsort?
- css - JavaFx (JDK8) - 在 ContextMenu 中设置按钮样式的最简单方法?
- visual-studio - 如何制作字符串“For hes a jolly good guy”的循环 3x / Rubric 附加在特定要求上
- javascript - 使用 if 语句隐藏元素(纯 Javascript)
- javascript - vue 发出事件并在父组件中接收
- cmd - 命令 pipenv 中的 Git Bash 与 cmd 颜色
- selenium - Webapp 中 SauceLabs 中的模拟相机源