我可以在Ruby测试中伪造调用方法吗?

时间:2016-05-30 08:18:30

标签: ruby unit-testing

我正在对我的Ruby代码运行一些测试,但我测试的方法调用负责发送推送通知的外部库中的函数。我希望它所做的调用是“伪造的”,所以它们实际上并没有被调用。如果他们能够返回标准响应,或者通过标准响应产生回报,那么它也会有所帮助。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

当然你可以在Ruby测试中伪造调用方法。您正在寻找的是创建所谓的模拟代码。完全可以从这样的模拟代码返回任何你想要的东西。

您可以在Ruby中创建一个阴影另一个标识符 - 例如,您可以创建自己的函数,遮蔽库中已存在的函数。

谷歌上面用粗体写的项目,或者如果需要,可以提出更具体的问题。

答案 1 :(得分:0)

VCR gem可以非常轻松地保存测试套件的HTTP交互并确定性地运行它们。这将是我建议的方法。

您也可以像其他人所指出的那样,存根您正在调用的方法并手动指定其响应。如果您使用rspec,则意味着在测试中的HTTP调用上方添加一行。有点像:

allow(Pusher).to receive(:message).and_return( "An object of your liking" )