RSpec: отключение вызовов для определенных параметров - PullRequest
1 голос
/ 09 марта 2010

Я хочу заглушить метод только для определенного параметра. Скажи, у меня есть класс

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>

Есть ли способ делегировать выполнение методу, который нужно удалить?

1 Ответ

2 голосов
/ 09 марта 2010

Вы можете использовать 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>
...