2013-09-19 5 views
0

Я просто не могу понять, что именно окурки.Что такое RSPEC Stubs? На пример

Может ли кто-нибудь объяснить, что должен делать следующий код RSPEC. И в чем преимущество использования заглушки здесь?

require "performance_monitor" 

require "time" # loads up the Time.parse method -- do NOT create time.rb! 

describe "Performance Monitor" do 
    before do 
    @eleven_am = Time.parse("2011-1-2 11:00:00") 
    end 

    it "takes exactly 1 second to run a block that sleeps for 1 second (with stubs)" do 
    fake_time = @eleven_am 
    Time.stub(:now) { fake_time } 
    elapsed_time = measure do 
     fake_time += 60 # adds one minute to fake_time 
    end 
    elapsed_time.should == 60 
    end 

end 

Я думаю, что смогу понять на примере.

+2

'stub' здесь используется для' override' функции 'now'' Time', поэтому вместо этого возвращаем текущее время, которое вы получили от 'Time.now' после заглушки, оно вернется 'Time.now + 60', который определяется в' fake_time' –

+0

. Как это похоже на Object.stub (: replace_this_original_value) {with_this_fake_value}? – aayushgx

+0

да, вы можете переопределить свои методы с помощью этой заглушки ....... –

ответ

3

stub здесь используется override функция now из Time так вот вместо того, чтобы вернуться current time, который вы получили от Time.now после окурка вернет fake_time

0

Обратите внимание, что заглушка будет только «переопределить» этот метод только в этом одном спекуляция Другие спецификации ответят Time.now правильно