RSpec模拟具有嵌套属性的类



我对Ruby和RSpec很陌生,在模拟类内部的属性链时遇到了困难:

client.conversations.configuration.update(sid: user.sid)

我已经这样嘲笑客户了:

let(:client) { class_double(Service::ClientFactory) }

然而,这是我使用receive方法尝试过但失败的,它不起作用。

allow(client).to receive(conversations.configuration.update).and_return("123123123")

我该如何正确地执行此操作?非常感谢。

您可能想要使用receive_message_chain:

allow(
client
).to receive_message_chain(:conversations, :configuration, update: "123123123")

但也请看一下页面上的部分:

警告:

链条可以任意长,这使得违反德米特定律变得非常无痛以暴力的方式,所以您应该将receivemessagechain的任何使用都视为代码气味。[…]

相关内容

  • 没有找到相关文章

最新更新