我想打这个电话:
headers[ 'REMOTE_ADDR' ]
可以用
allow_any_instance_of(RequestHandler).to
receive_message_chain(:headers, :[]) do |field|
'1.2.3.4'
end
但是,我想要一个部分double,所以只有在field == 'REMOTE_ADDR'
时返回存根响应。对于其他字段,我想调用原始实现。
根据RSpec docs,
expect(API).to receive(:solve_for).and_wrap_original { |m, *args| m.call(*args).first(5) }
然而,这似乎不适用于消息链。我得到:
undefined method `and_wrap_original' for #<RSpec::Mocks::Matchers::ReceiveMessageChain:0x007faef1f3fd20>
那么,在RSpec中创建这个部分double的好方法是什么呢?
rspec-mocks 3.4.1
1条答案
按热度按时间dgtucam11#
对于您的特定情况,您可以依赖
with
方法根据传递的参数来限定double: