如何测试函数的逻辑但忽略方法调用?

时间:2019-06-07 10:22:35

标签: ruby

我正在为现有代码编写Rspec测试,并在其中添加了一些逻辑,以确保其正常运行。我不在乎返回的值,只是逻辑对传递给它的对象起作用。为简单起见,下面是我构建的类中的一个非常基本功能的示例:

def function_I_want_to_test(thing)
  if thing > 0
    function_a(thing)
  else
    function_b(thing)
  end
end

function_afunction_b已经进行了规格测试,所以我并不在乎返回值是什么,但是function_afunction_b都进行了API调用,感觉会使rspec测试仅测试function_I_want_to_test中包含的逻辑变得更加复杂。

我已经浏览了该页面(https://blog.codeship.com/unit-testing-in-ruby/),回顾了单元测试方法,并进行了解释,但是当尝试使用allowreceive时,似乎函数仍然要被调用,所以我假设我没有正确地使用函数。

本质上,我想这样对待我的代码,并让它返回任意值,因此它甚至不调用该函数。

def function_I_want_to_test(thing)
  if thing > 0
    pp "a"
  else
    pp "b"
  end
end

从我的研究看来,允许/期望是可行的方法,但是我假设我对这个概念并不完全了解。

我想我的主要问题是,在测试function_a时,我的rspec测试如何知道“覆盖”函数(function_bfunction_I_want_to_test)?

我知道也有一些类似的问题,但是它们似乎并没有回答我的期望。

0 个答案:

没有答案