模拟具有不同参数和不同结果的静态方法

时间:2017-10-12 01:57:36

标签: ruby rspec

我有一个静态类Exec,方法是doSomething(for)

现在我想模仿它按顺序进行2次调用或按顺序进行任何顺序。

Exec.stub(:doSomthing).with('a').and_return('called with a')
Exec.stub(:doSomthing).with('b').and_return('called with b')

收到错误

Please stub a default value first if message might be received with other args as well.

我该如何解决?

注意:上面的代码只是伪代码而不是我的真实代码

1 个答案:

答案 0 :(得分:1)

你可以这样做:

allow(Exec).to receive(:doSomthing).with('a').and_return('called with a')
allow(Exec).to receive(:doSomthing).with('b').and_return('called with b')

使用expect而不是allow如果您根本没有调用该方法时需要您的规范失败。