TEMA 6 Flashcards
¿Qué es un Mock en pruebas unitarias?
Un doble de prueba que verifica interacciones específicas entre la unidad probada y sus dependencias.
¿Qué diferencia principal existe entre un Stub y un Mock?
El Stub proporciona datos predefinidos, mientras que el Mock verifica las interacciones (llamadas y parámetros).
¿Qué framework se usa habitualmente para crear Mocks en Java?
EasyMock.
¿Qué hace el método expect() en EasyMock?
Define expectativas sobre métodos llamados en el Mock, especificando valores devueltos o excepciones lanzadas.
¿Qué función cumple el método replay() en EasyMock?
Activa los mocks, indicando que están listos para ser usados en las pruebas.
¿Qué propósito tiene el método verify() de EasyMock?
Verifica que todas las interacciones esperadas con los mocks se hayan realizado correctamente.
¿Cuándo falla una prueba que utiliza un Mock?
Cuando las interacciones reales no coinciden exactamente con las interacciones esperadas configuradas en el Mock.
¿Qué es un StrictMock en EasyMock?
Un tipo de Mock que verifica tanto los parámetros como el orden exacto de las llamadas realizadas.
¿Qué es un NiceMock en EasyMock?
Un Mock flexible que no verifica estrictamente llamadas ni orden y devuelve valores predeterminados si no se especifica lo contrario.
¿Qué ventajas tiene usar mocks en pruebas unitarias?
Permiten detectar errores de interacción y ayudan a aislar unidades complejas o dependencias externas.
¿En qué consiste la verificación basada en comportamiento?
En comprobar que las interacciones con dependencias externas se realicen exactamente según lo especificado.
¿Qué sucede si una interacción esperada no se produce usando un Mock?
La prueba falla durante la fase de verificación (verify()).
¿Puede un Mock lanzar excepciones simuladas?
Sí, puede configurarse para lanzar excepciones específicas según escenarios concretos.
¿Qué tipo de errores ayuda a detectar especialmente el uso de Mocks?
Errores relacionados con la comunicación y uso incorrecto de dependencias externas.
¿Por qué es útil verificar el orden de las llamadas usando Mocks?
Porque asegura que el flujo del programa es correcto, especialmente en interacciones complejas con dependencias.
¿Un Mock puede verificar cuántas veces se invoca un método?
Sí, se pueden establecer expectativas precisas sobre el número de veces que se debe invocar un método.
¿Cuál es el beneficio principal de combinar Mocks con Stubs?
Permite controlar tanto las entradas (Stub) como las salidas/interacciones (Mock), obteniendo pruebas más completas.
¿Qué ventaja proporciona la verificación basada en comportamiento frente a la basada en estado?
Detecta fallos tempranamente relacionados con la lógica de interacción, incluso antes de evaluar el estado final.
¿Qué es un Mock en pruebas unitarias?
Un doble de prueba que verifica interacciones específicas entre la unidad probada y sus dependencias.
¿Qué diferencia principal existe entre un Stub y un Mock?
El Stub proporciona datos predefinidos, mientras que el Mock verifica las interacciones (llamadas y parámetros).
¿Qué framework se usa habitualmente para crear Mocks en Java?
EasyMock.
¿Qué hace el método expect() en EasyMock?
Define expectativas sobre métodos llamados en el Mock, especificando valores devueltos o excepciones lanzadas.
¿Qué función cumple el método replay() en EasyMock?
Activa los mocks, indicando que están listos para ser usados en las pruebas.
¿Qué propósito tiene el método verify() de EasyMock?
Verifica que todas las interacciones esperadas con los mocks se hayan realizado correctamente.