假设我有一个类,其中有一个修改并返回哈希值的方法。 测试类时,将调用该方法,但出于测试目的,我希望它返回未修改的参数。
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 中完成吗?如果是的话,怎么办?
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
但是这个测试非常没用