Mockito: Snippets de código

Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad. Claro que también los puedes usar para tu desarrollo en el día a día.

Mock básico

import static org.mockito.Mockito.*;

List<String> mockedList = mock(List.class); //clase a simular

when(mockedList.get(0)).thenReturn("hello"); //comportamiento simulado

 //llamadas
assertEquals("hello", mockedList.get(0));
mockedList.add("test");

//verificaciones
verify(mockedList).add("test");
verify(mockedList, times(1)).add("test");
verify(mockedList, never()).clear();

Si te llegan a mostrar algo como esto es mejor que sospeches, mockito se usa principalmente para pruebas de integración. Si llegas a ver código como este, lo más probable es que el desarrollador solamente quisiera llegar a su cuota de code coverage.

Mock e inject mocks

@ExtendWith(MockitoExtension.class)
class UserServiceTest {

    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private UserService userService; //lugar donde se usa el mock

    @Test
    void shouldReturnUser() {
        //comportamiento simulado
        when(userRepository.findById(1L))
            .thenReturn(Optional.of(new User(1L, "John")));
    when(userRepository.findById(1L))
    .thenThrow(new RuntimeException("DB error")); //simulación de errores

        User user = userService.getUser(1L); //método que usa la clase a simular

        //verificaciones
        assertEquals("John", user.getName());
        assertThrows(RuntimeException.class, () -> {
            userService.getUser(1L);
        });
    }
}

Esta es la forma más común de usar mockito, simular respuestas y errores. Cuando simulamos una respuesta que siempre es la misma se le llama stub, cuando cambia dependiendo de alguna condición se le conoce como mock.


  • Cursos de Código Facilito

    Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual de cursos en idioma exclusivamente español que inició como un canal de YouTube. Opinión de la plataforma En mi opinión la plataforma aún es incipiente y los cursos necesitan más trabajo, ya que es muy común hallarse con clases de…


  • Cursos de LinkedIn Learning

    Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma virtual de cursos propiedad de Microsoft. Hallarás mucho material en inglés, pues prácticamente todos los cursos vienen con subtítulos en castellano y en la parte técnica son muy buenos debido a la adquisición de Lynda.com. En mi opinión la plataforma…


  • Mockito: Snippets de código

    Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad. Claro que también los puedes usar para tu desarrollo en el día a día. Mock básico Si te llegan a mostrar algo como esto es mejor que sospeches, mockito se usa principalmente para pruebas de integración. Si llegas a ver…


javapro.org