2014-09-01 1 views
1

Я хочу попробовать проверить, использует ли объект оптимизацию в конкретном случае. Так что у меня есть этот вид кодаRuby Rspec3 ожидает получить один раз вызов для внутреннего метода

class Bar 
    attr_reader :n 
    def initialize(n) 
    @n=n 
    end 

    def a 
    if @n <= 3 
     b1 
    else 
     b2 
    end 
    end 

    def b1 
    @n+=1 
    end 

    def b2 
    @n+=1 ##super fast addition 
    end 
end 

Я пытаюсь написать RSpec так

bar=Bar.new(5) 
allow(bar).to receive(:b2).and_call_original 

bar.a 
expect(bar).to receive(:b2).once 
expect(bar.n).to eq 6 

Но это не работает ... Вы Kown это возможно? и если да, то как?

ответ

2

Вы должны указать receive Ожидание до Метод вызова. Кроме того, вы можете объединить allow и expect в одну строку:

bar = Bar.new(5) 
expect(bar).to receive(:b2).once.and_call_original 
bar.a 
expect(bar.n).to eq 6 
+0

Спасибо, мой тест работы в настоящее время – ebuprofen

 Смежные вопросы

  • Нет связанных вопросов^_^