Burlarse de un DataReader y obtener un Rhino.Mocks.Exceptions.ExpectationViolationException: IDisposable.Dispose (); Esperado # 0, Actual # 1

Estoy tratando de burlarme de un SqlDataReader

 SqlDataReader reader = mocks.CreateMock<SqlDataReader>();
 Expect.Call(reader.Read()).Return(true).Repeat.Times(1);
 Expect.Call(reader.Read()).Return(false);
 Expect.Call(reader.HasRows).Return(true);
 Expect.Call(reader.Dispose);
 Expect.Call(reader["City"]).Return("Boise");
 Expect.Call(reader["State"]).Return("State");
 Expect.Call(reader["LAT"]).Return(100);
 Expect.Call(reader["LON"]).Return(-100);
 mocks.ReplayAll();

pero sigo recibiendo un Rhino.Mocks.Exceptions.ExpectationViolationException: IDisposable.Dispose (); Se esperaba # 0, error # 1 real en mi método

        using (reader)
        {
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    CityState myCity = new CityState
                       {
                           City = reader["City"].ToString(),
                           State = reader["State"].ToString(),
                           Lat = Convert.ToInt32(reader["LAT"]),
                           Lon = Convert.ToInt32(reader["LON"])
                       };
                    myCities.Add(myCity);
                }                    
            }               
        }

¿Me estoy perdiendo de algo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta