2017-02-02 19 views
0

Я добавил следующий метод в середине проекта:RSpec - гася метод класса

def finishes_after_venue_shuts? 
    return unless venue && finish 
    day = regular_day ? regular_day : start.strftime('%a').downcase 
    finish > venue.openingtimes.where(default_day: day).pluck(:finish)[0] 
end 

Это вызвало тесты 1000 + к сбою в рамках проекта. Они не справляются со следующим кодом ошибки:

ArgumentError: 
    comparison of ActiveSupport::TimeWithZone with nil failed 

Я попытался гашу метод следующим образом, но я по-видимому, делает что-то неправильно:

before do 
    allow(Event.any_instance).to receive(:finishes_after_venue_shuts?).and_return(false) 
end 

Что такое правильный синтаксис для гася метод и просто возвращает false, а не выполняет код?

Заранее спасибо.

ответ

5

Вы были близки :)

allow_any_instance_of(Event) 
    .to receive(:finishes_after_venue_shuts?) 
    .and_return(false) 
+1

отлично работает - большое спасибо Андрей примет ответ в ближайшее время. – Mark

+0

@Mark приветствуется :) –

+0

@AndreyDeineko, а что если finishes_after_venue_shuts? будет метод класса? – TWONEKSONE

0

Вы также можете сделать:

Event.any_instance.stub(:finishes_after_venue_shuts).and_return(false)