RSpec:断言模拟是正确的

时间:2018-11-17 03:42:13

标签: ruby unit-testing testing rspec

在编写RSpec测试时,我经常发现自己在代码库中嘲笑了各种功能。但是,似乎没有任何地方可以防止我意外地错误地模拟函数,因此我想强制执行此 how

举一个具体的例子,假设我具有要测试的功能:

def function_under_test
  some_function(a: 1, b: 2, c: 3)
end

def some_function(a:, b:, c:)
  { a: a, b: [b, b, b], c: { a: 1, b: 2, c: 3 } }
end

并对其进行测试

it 'should return the correct result' do
  subject = function_under_test
  expect(some_function).to_return(1)
  expect(subject).to eq(1)
end

我完全更改了该函数的接口,但我的测试仍然通过。我喜欢编写模拟程序非常简单,但是能够强制我正在编写的模拟程序遵循该函数提供的接口确实很棒。有什么办法可以做到这一点?只要可以满足我的需要,我可以包含示例或共享上下文,也可以不包含任何其他内容。

谢谢!

1 个答案:

答案 0 :(得分:0)

命名参数被强制具有值,不带参数调用trait BB extends AA { def getInputFile { """./myfile""" } } 会导致异常。

所以ruby已经确保您传递some_functionab参数的值(除非您定义默认值)