Stubbing de consultas encadenadas en los rieles 3 y Rspec

Estoy tratando de probar un alcance que tengo que se basa en una cadena de otros ámbitos. ("public_stream" a continuación).

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) }

Usando una prueba como esta:

    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

Sin embargo, sigo recibiendo este error:

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

Parece que include_values es una variable de instancia del objeto ActiveRecord :: Relation, pero cuando trato de ocultarlo, sigo recibiendo el mismo error. Me preguntaba si alguien tenía experiencia en tropezar las nuevas consultas encadenadas de Rails 3. Puedo encontrar mucha discusión sobre el hash find de 2.x, pero nada sobre cómo probar lo que está actual.

Respuestas a la pregunta(4)

Su respuesta a la pregunta