在 RSpec 中,如何模拟方法以使其返回其参数

问题描述 投票:0回答:1

假设我有一个类,其中有一个修改并返回哈希值的方法。 测试类时,将调用该方法,但出于测试目的,我希望它返回未修改的参数。

class MyClass 
  def myMethod(h)
    # method body that modifies h before returning it
    h[:some_new_key] = "some new value"
    return(h)
  end
end

也就是说,我要做这样的事情......

allow(instanceOfMyClass).to receive(:my_method).with( a_hash ).and_return( a_hash )

...其中

a_hash
是任意哈希,在我的测试中未明确指定。在测试中,我希望
instanceOfMyClass.my_method(a_hash)
返回
a_hash
,与传递的参数相同。

这可以在 RSpec 中完成吗?如果是的话,怎么办?

ruby-on-rails ruby rspec mocking stubbing
1个回答
0
投票
let(:instance) { described_class.new }
let(:value) { { a: 1 } }

before { allow(instance).to receive(:my_method).and_return(value) }

it 'returns hash' do
  expect(instance.my_method).to eq value
end

但是这个测试非常没用

© www.soinside.com 2019 - 2024. All rights reserved.