2013-08-22 1 views
0

Возможно ли сделать что-то вроде ServiceObject.should_receive(:foo).with(:bar).and_call_original.exacly(1).times?Rspec можно сделать что-то вроде should_receive (: foo) .with (: bar) .and_call_original.exacly (1). ×?

Мои данные выглядеть примерно так:

it 'should call instance of service object\'s :baz! method' do 
    ServiceObject.any_instance.should_receive(:baz!).exactly(1).times 
end 

it 'should call service object\'s :foo method' do 
    ServiceObject.should_receive(:foo).with(:bar).and_call_original.exacly(1).times 
end 

Если удалить and_call_original первый спекуляция терпит неудачу. Если я прокомментирую .exacly(1).times во втором spec, то оба спецификатора пройдут.

Два вопроса:

  • Почему эти две функции мешают друг другу?
  • Есть ли способ назвать что-то, что означает .should_receive(:foo).with(:bar).and_call_original.exacly(1).times?

Заранее благодарен!

ответ

3

and_call_original не возвращает текущий example, так что он не может работать.

Вместо этого вы можете сделать:

.should_receive(:foo).with(:bar).exacly(1).times.and_call_original 
+0

Ха-ха ... должен был попробовать это. По какой-то причине я думал, что не возвращал этот пример. Благодаря! – Stratus3D