令人惊讶的是找不到任何相关内容。
试图将这一系列方法存根:
Twitter::REST::Client.new(<some credentials>).user.followers_count
我真正想做的是:
allow_any_instance_of(Twitter::REST::Client).to receive_message_chain(:user, :followers_count).and_return 0
但它没有用。发出错误undefined method 'receive_message_chain'
。
所以我在Rspec-Mocks 3.0上找到了这个教程:https://github.com/rspec/rspec-mocks/blob/master/features/method_stubs/receive_message_chain.feature
尝试了这个:
subject = Twitter::REST::Client
allow(subject).to receive_message_chain(:user, :followers_count).and_return 0
expect(Twitter::REST::Client.new.users.followers_count).to eq 0
只是尝试一下 - 它也不起作用。有什么我做错了吗?
我的rspec-mocks (3.0.0.beta1)
确实有Gemfile.lock
。
其他类型的存根(例如.to receive(:method)
正常工作。
答案 0 :(得分:4)
如https://github.com/rspec/rspec-mocks/blob/master/Changelog.md#300beta2--2014-02-17中所述,方法receive_message_chain
已在3.0.0.beta2中引入,因此如果您升级rspec-mocks
版本(目前位于3.0.0.rc1),你应该对这种语法没问题。