Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby RSpec模拟具有嵌套属性的类_Ruby_Unit Testing_Rspec - Fatal编程技术网

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

我对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")
如何才能正确地执行此操作? 谢谢大家!

您可能需要使用:

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

警告:

铁链可以任意长,这使得违反德墨忒尔法毫无痛苦 以暴力的方式,所以你应该考虑任何使用接收信息的代码气味。[……]

您可能需要使用:

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

警告:

铁链可以任意长,这使得违反德墨忒尔法毫无痛苦 以暴力的方式,所以你应该考虑任何使用接收信息的代码气味。[……]


你可以用这个,但最好不要存根。。。你为什么要把这个截短?这是个很好的问题。我假设您已经分别测试了
客户端.conversations
conversations.configuration
configuration.update
(如果您没有,您应该这样做),那么是否真的需要对其进行测试?您可以使用它,但最好不要将其存根。。。你为什么要把这个截短?这是个很好的问题。我假设你已经分别测试了
客户端.对话
对话.配置
配置.更新
(如果你没有,你应该这样做),那么真的需要测试吗?谢谢,我会考虑的谢谢,我会考虑的
allow(
  client
).to receive_message_chain(:conversations, :configuration, update: "123123123")