2015-01-15 2 views
1

Я в процессе реорганизации раздутого контроллера, который служит полиморфной модели для каруселей. Я пытаюсь создать метод класса, который обрабатывает поиск и возврат элемента, который можно использовать для карусели.Rspec как заглушить объект, созданный в рамках метода

В моих тестах RSPEC я хочу заглушить метод «is_something?» на месте, которое найдено в результате параметров.

def self.find_carouselable(params) 
    ....... 
    elsif params[:venue_id].present? 
     venue=Venue.friendly.find(params[:venue_id]) 
     if venue.is_something? 
     do this 
     else 
     do that 
     end 
    end 
    end 

Я не могу работать, как незавершенная объект, который создается в результате введенных данных - я не уверен, если это называется раскорчевкой или издеваются?

context "carouselable is a venue" do 
    before do 
     allow(the_venue).to receive(:is_something?).and_return(true) 
    end 

    it "returns the instance of the carouselable object" do 
     expect(CopperBoxCarouselItem.find_carouselable(venue_params)).to eq the_venue 
    end 
    end 

большое спасибо

ответ

2

Вам нужно только окурок бит Venue, как и

 before do 
     allow(Venue).to receive(:friendly).and_return(some_venues) 
     allow(some_venues).to receive(:find).and_return(venue) 
     allow(venue).to receive(:is_something?).and_return(true) 
     end 
Смежные вопросы