Mockito 102
testing
mockito
performance
Bien bien, lo recogido en el post ‘Mockito 101’ parece sencillo, pero en el mundo real los Controller/Services/Repositories llaman a servicios y repositories desde dentro de los métodos y claro no siempre se tiene en cuenta la testabilidad a la hora de escribir métodos, con lo que llegamos al y ahora que?
No hay problema, vamos a utilizar reflexión para setear en la clase a testear el campo servicio/repositorio con un mock que devuelva lo queremos.
Para ello en este caso utlizaremos ‘ReflectionTestUtils’ de import org.springframework.test.util, de forma que eEn el ejemplo asumimos que la clase MyController tiene un campo tipo ‘MyService’ llamado ‘myService’
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private MyController myController;
@Before
public void setup(){
myController = new myController();
}
@Test
public void myControllerTest() throws Exception {
MyService myService = mock(MyService.class);
when(myService.getSomethingList().thenReturn(Collections.emptyList());
ReflectionTestUtils.setField(myController, "myService", myService);
List<Something> result = myController.getSomethingList();
Assert.assertTrue(result.isEmpty());
}