Soy un novato en el desarrollo y pruebas unitarias en particular. Supongo que mi requisito es bastante simple, pero estoy interesado en conocer otras opiniones sobre esto.Variables de miembro burlón de una clase usando Mockito
Supongamos que tengo dos clases como así -
public class First {
Second second ;
public First(){
second = new Second();
}
public String doSecond(){
return second.doSecond();
}
}
class Second {
public String doSecond(){
return "Do Something";
}
}
Digamos que estoy escribiendo unidad de prueba para probar First.doSecond()
método. Sin embargo, supongamos, quiero simular clase Second.doSecond()
como tal. Estoy usando Mockito para hacer esto.
public void testFirst(){
Second sec = mock(Second.class);
when(sec.doSecond()).thenReturn("Stubbed Second");
First first = new First();
assertEquals("Stubbed Second", first.doSecond());
}
Estoy viendo que la burla no tiene efecto y la afirmación falla. ¿No hay forma de burlarse de las variables miembro de una clase que quiero probar? ?
Gracias. Yo lo veo. Me pregunto cómo puedo realizar pruebas de integración usando simulacros donde puede haber muchos métodos internos, clases que pueden necesitar ser burladas, pero no necesariamente disponibles para establecerse a través de un setXXX() de antemano. –
Utilice un marco de inyección de dependencia, con una configuración de prueba. Dibuja un diagrama de secuencia de la prueba de integración que estás tratando de hacer. Factoriza el diagrama de secuencia en los objetos que realmente puedes controlar. Esto significa que si está trabajando con una clase de infraestructura que tiene el antiporno de objeto dependiente que muestra arriba, entonces debe considerar el objeto y su miembro mal factorizado como una sola unidad en términos del diagrama de secuencia. Esté preparado para ajustar el factoring de cualquier código que controle, para hacerlo más comprobable. – kittylyst
Estimado @kittylyst, sí, probablemente sea incorrecto desde el punto de vista TDD o desde cualquier punto de vista racional. Pero a veces un desarrollador trabaja en lugares donde nada tiene sentido y el único objetivo que tiene es simplemente completar las historias que ha asignado y desaparecer. Sí, está mal, no tiene sentido, las personas no calificadas toman las decisiones clave y todas esas cosas. Entonces, al final del día, los antipatrones ganan mucho. – amanas