Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/03/2014, 13:21
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 7 meses
Puntos: 7
Duda con MVC, Mock y Test Unitarios...

Hola Foreros !!!

Siento no haber sido más específico en el Título del tema, pero.. es que no sabía como describir el problema brevemente.

Veréis, tengo un repositorio que tiene un método void StartParking().

En mi Método del Controlador hago una llamada a este método, si va todo bien devuelve true, si va mal (Es decir, se genera una excepción) devuelve false.

Ahora bien... quiero hacer un Test Unitario, emulando que la llamda es correcta, y otra que la llamada es incorrecta.

La llamada correcta, CREO que la tengo bien configurada, pero.... la incorrecta no, ya que me devuelve que el test es fallido.

Por favor... a ver si alguien puede ayudarme, por que estoy aprendiendo con esto del Test y Mock y estoy un poco perdido...

Les dejo las parte de código relevantes.


Controlador:
Código:
        [HttpGet]
        public bool Start(Guid codUser, int codZone, int codVehicle)
        {

            try
            {

                this.ParkingRepository.StartParking(codUser, codZone, codVehicle);

                return true;
            }
            catch (HSoftException exHsoft)
            {

                exHsoft.InsertWay(this.GetType(), MethodBase.GetCurrentMethod());
                HSoftException.LogException(exHsoft, "ParkingController");
            }
            catch (Exception ex)
            {

                HSoftException exHsoft = new HSoftException(this.GetType(), MethodBase.GetCurrentMethod(), EnumTypeException.Page, ex);
                HSoftException.LogException(exHsoft, "ParkingController");
            }

            return false;
        }

TEST UNITARIOS
Código:
//Este primer TestMethod PARECE que lo tengo bien implementado.
        [TestMethod]
        public void Can_Start_Parking()
        {

            Mock<IParkingRepository> mockRepository = new Mock<IParkingRepository>();

            mockRepository.Setup(objSetup => objSetup.StartParking(It.IsAny<Guid>(), It.IsAny<int>(), It.IsAny<int>())).Verifiable();

            ParkingController parkingController = new ParkingController(mockRepository.Object);

            bool result = parkingController.StartParking(new Guid(), 1, 1);

            Assert.AreEqual(result, true);
        }


        [TestMethod]
        public void Not_Can_Start_Parking()
        {

            Mock<IParkingRepository> mockRepository = new Mock<IParkingRepository>();

            mockRepository.Setup(objSetup => objSetup.StartParking(It.IsAny<Guid>(), It.IsAny<int>(), It.IsAny<int>()))
                                                     .Callback((Guid guidUser, int codZone, int codVehicle) =>
                                                        {
                                                            throw new Exception();
                                                        });

            ParkingController parkingController = new ParkingController(mockRepository.Object);

            bool result = parkingController.StartParking(new Guid(), 1, 1);

            Assert.AreEqual(result, false);
        }
__________________
Charlie.