Ruby RSpec模拟具有嵌套属性的类
我对Ruby和RSpec非常陌生,在尝试模拟类内的属性链时遇到困难:Ruby RSpec模拟具有嵌套属性的类,ruby,unit-testing,rspec,Ruby,Unit Testing,Rspec,我对Ruby和RSpec非常陌生,在尝试模拟类内的属性链时遇到困难: client.conversations.configuration.update(sid: user.sid) 我已经这样嘲笑了客户: let(:client) { class_double(Service::ClientFactory) } 然而,这正是我使用receive方法尝试过但失败的地方,该方法不起作用 allow(client).to receive(conversations.configuration
client.conversations.configuration.update(sid: user.sid)
我已经这样嘲笑了客户:
let(:client) { class_double(Service::ClientFactory) }
然而,这正是我使用receive
方法尝试过但失败的地方,该方法不起作用
allow(client).to receive(conversations.configuration.update).and_return("123123123")
如何才能正确地执行此操作?
谢谢大家! 您可能需要使用:
但也请看一下该页上的部分:
警告:
铁链可以任意长,这使得违反德墨忒尔法毫无痛苦
以暴力的方式,所以你应该考虑任何使用接收信息的代码气味。[……]
您可能需要使用:
但也请看一下该页上的部分:
警告:
铁链可以任意长,这使得违反德墨忒尔法毫无痛苦
以暴力的方式,所以你应该考虑任何使用接收信息的代码气味。[……]
你可以用这个,但最好不要存根。。。你为什么要把这个截短?这是个很好的问题。我假设您已经分别测试了
客户端.conversations
、conversations.configuration
和configuration.update
(如果您没有,您应该这样做),那么是否真的需要对其进行测试?您可以使用它,但最好不要将其存根。。。你为什么要把这个截短?这是个很好的问题。我假设你已经分别测试了客户端.对话
,对话.配置
和配置.更新
(如果你没有,你应该这样做),那么真的需要测试吗?谢谢,我会考虑的谢谢,我会考虑的
allow(
client
).to receive_message_chain(:conversations, :configuration, update: "123123123")