32
是否存在僅針對特定參數存根方法的方法?事情是這樣的僅針對特定參數的Rspec存根方法
boss.stub(:fire!).with(employee1).and_return(true)
如果任何其他僱員傳遞給boss.fire!
方法,我會得到boss received unexpected message
錯誤,但我真的想只是覆蓋特定參數的方法,並把它爲所有其他。
任何想法如何做到這一點?
是否存在僅針對特定參數存根方法的方法?事情是這樣的僅針對特定參數的Rspec存根方法
boss.stub(:fire!).with(employee1).and_return(true)
如果任何其他僱員傳遞給boss.fire!
方法,我會得到boss received unexpected message
錯誤,但我真的想只是覆蓋特定參數的方法,並把它爲所有其他。
任何想法如何做到這一點?
您可以添加一個缺省短線的fire!
方法,該方法將調用原始的實現:
boss.stub(:fire!).and_call_original
boss.stub(:fire!).with(employee1).and_return(true)
Rspec的3語法(@ pk-nb)
allow(boss).to receive(:fire!).and_call_original
allow(boss).to receive(:fire!).with(employee1).and_return(true)
你可以嘗試寫自己的存根方法,用這樣的代碼
fire_method = boss.method(:fire!)
boss.stub!(:fire!) do |employee|
if employee == employee1
true
else
fire_method.call(*args)
end
end
謝謝安德烈,正是我在找的 – 2014-01-17 07:08:04
乾淨的方式存根。謝謝。 – bragboy 2015-04-01 14:46:44
與RSpec 3語法相同的東西: 'allow(boss).to receive(:fire!)。and_call_original allow(boss).to receive(:fire!)。with(employee1).and_return(true)' – 2015-05-07 17:31:11