Сцепление цепочечных запросов в Rails 3 и Rspec

Я пытаюсь проверить имеющуюся область, основанную на цепочке других областей. ("public_stream" ниже).

scope :public, where("entries.privacy = 'public'")
scope :completed, where("entries.observation <> '' AND entries.application <> ''")
scope :without_user, lambda { |user| where("entries.user_id <> ?", user.id) }
scope :public_stream, lambda { |user| public.completed.without_user(user).limit(15) }

Используя такой тест:

    it "should use the public, without_user, completed, and limit scopes" do
      @chain = mock(ActiveRecord::Relation)
      Entry.should_receive(:public).and_return(@chain)
      @chain.should_receive(:without_user).with(@user).and_return(@chain)
      @chain.should_receive(:completed).and_return(@chain)
      @chain.should_receive(:limit).with(15).and_return(Factory(:entry))

      Entry.public_stream(@user)
    end

Тем не менее, я продолжаю получать эту ошибку:

Failure/Error: Entry.public_stream(@user)
undefined method `includes_values' for #<Entry:0xd7b7c0>

Кажется, include_values ​​является переменной экземпляра объекта ActiveRecord :: Relation, но когда я пытаюсь заглушить его, я все равно получаю ту же ошибку. Мне было интересно, есть ли у кого-нибудь опыт работы с новыми цепочечными запросами в Rails 3? Я могу найти кучу обсуждений по поводу хеша 2.x find, но ничего о том, как проверить то, что актуально.

Ответы на вопрос(4)

Ваш ответ на вопрос