我对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的任何使用都视为代码气味。[…]