2010-03-09 30 views
1

我想只爲某個參數存留一個方法。說我有一個類RSpec:將某些參數的呼叫撥出

class Foo 
    def bar(i) 
    i*2 
    end 
end 

現在我想存根出方法欄僅適用於值來電說,3和所有其他情況下返回方法的返回值:

>> foo = Foo.new 
>> foo.bar(2) 
=> 4 
>> foo.stub!(:bar).with(3).and_return(:borked) 
>> foo.bar(3) 
=> :borked 
>> foo.bar(2) 
NoMethodError: undefined method `bar' for #<Foo:0x10538e360> 

有一種將執行委託給被剔除的方法的方法?

回答

2

您可以使用unstub!方法


>> foo = Foo.new 
>> foo.bar(2) 
=> 4 
>> foo.stub!(:bar).with(3).and_return(:borked) 
>> foo.bar(3) 
=> :borked 
>> foo.unstub!(:bar) 
>> foo.bar(2) 
NoMethodError: undefined method `bar' for #<Foo:0x10538e360>