Validando controlador (problemas rSpec y relación has_many)

Tengo el siguiente código en mi controlador:

def mostrar_plantilla
@club = Club.find(params[:id])
@plantilla = @club.jugadores.find(:all)
end

Tengo una relación en la que Club has_many Jugadores y Jugador
belongs_to Club, entonces me dispongo a testear esa acción de mi
controlador con el siguiente código:

describe “GET /clubs/mostrar_plantilla/1” do

before(:each) do
    @club = mock_model(Club)
    @club.jugadores = mock_model(Jugador)
    Club.stub!(:find).and_return(@club)
    Jugador.stub!(:find).with(:all).and_return([@club.jugadores])
end

def do_get
    get :mostrar_plantilla, :id => "1"
end

it "debe ser satisfactoria" do
  do_get
  response.should be_success
end

end

Y me lanza el siguiente error:

Spec::Mocks::MockExpectationError in ‘ClubsController GET
/clubs/mostrar_plantilla/1 debe ser satisfactoria’
Mock ‘Club_1001’ received unexpected message :jugadores= with
(#<Jugador:0x…fdb826a94 @name=“Jugador_1002”>)
/home/carlos/NetBeansProjects/ofs/spec/controllers/clubs_controller_spec.rb:318:

¿Qué estoy haciendo mal?

Carlos Belizón wrote:

Tengo el siguiente código en mi controlador:

def mostrar_plantilla
@club = Club.find(params[:id])
@plantilla = @club.jugadores.find(:all)
end

Tengo una relación en la que Club has_many Jugadores y Jugador
belongs_to Club, entonces me dispongo a testear esa acción de mi
controlador con el siguiente código:

describe “GET /clubs/mostrar_plantilla/1” do

before(:each) do
    @club = mock_model(Club)
    @club.jugadores = mock_model(Jugador)
    Club.stub!(:find).and_return(@club)
    Jugador.stub!(:find).with(:all).and_return([@club.jugadores])
end

def do_get
    get :mostrar_plantilla, :id => "1"
end

it "debe ser satisfactoria" do
  do_get
  response.should be_success
end

end

Y me lanza el siguiente error:

Spec::Mocks::MockExpectationError in ‘ClubsController GET
/clubs/mostrar_plantilla/1 debe ser satisfactoria’
Mock ‘Club_1001’ received unexpected message :jugadores= with
(#<Jugador:0x…fdb826a94 @name=“Jugador_1002”>)
/home/carlos/NetBeansProjects/ofs/spec/controllers/clubs_controller_spec.rb:318:

¿Qué estoy haciendo mal?

He conseguido solucionar el problema modificando mi código en el
controlador de la siguiente forma:

def mostrar_plantilla
@club = Club.find(params[:id])
@plantilla = @club.jugadores
end

Y en el fichero rspec:

before(:each) do
@club = mock_model(Club)
@jugador = mock_model(Jugador)
Club.stub!(:find).and_return(@club)
@club.stub!(:jugadores).and_return([@jugador])
end

Así, funciona perfectamente, pero tengo la duda de por qué no fucnionaba
la anterior forma, ¿Alguien que me ilumine? (A)

Gracias a todos ;).