使用 Rspec 存根链式方法

2023-12-24

我想调用一个只返回一条记录的named_scope,但是named_scope返回一个数组,这不是什么大问题,因为我可以将它与.first链接起来:

Model.named_scope(param).first

这有效,我正在努力解决的是如何对链式调用进行存根。有没有人有关于我如何通过 Rspec 模拟实现这一目标的参考或答案?


我想出了一些办法。

Client.stub!(:named_scope).and_return(@clients = mock([Client]))
@clients.stub!(:first).and_return(@client = mock(Client))

这允许我调用我的控制器:

@client = Client.named_scope(param).first

它有效,但是有更好的解决方案吗?

EDIT:

rspec 1.2.6 的发布允许我们使用stub_chain,这意味着它现在可以是:

Client.stub_chain(:named_scope, :chained_call).and_return(@clients = [mock(Client)])

这是我最关心的问题,因为我总是检查 api 来了解具体细节:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Rspec 存根链式方法 的相关文章

随机推荐