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());
    }

Lecturas