Mercurial > hg > SpringPlayground
diff spring-boot-playground/src/test/java/de/comline/spring/service/MovieServiceTest.java @ 5:227f3105fedd
Erster Unit Test, der das repository einfach nur mockt
author | Dirk Olmes <dirk.olmes@codedo.de> |
---|---|
date | Thu, 13 Aug 2020 15:58:57 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spring-boot-playground/src/test/java/de/comline/spring/service/MovieServiceTest.java Thu Aug 13 15:58:57 2020 +0200 @@ -0,0 +1,48 @@ +package de.comline.spring.service; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import de.comline.spring.entity.Movie; +import de.comline.spring.repository.MovieRepository; +import de.comline.spring.service.MovieServiceTest.TestConfig; + +@SpringBootTest(classes = { + MovieService.class, + TestConfig.class +}) +public class MovieServiceTest { + @Autowired + private MovieService service; + + @Test + @DisplayName("Test with a mock movie repository") + void withMockRepository() { + String title = "the-movie-title"; + + Movie movie = service.createMovie(title); + assertThat(movie.getTitle(), is(title)); + } + + @Configuration + static class TestConfig { + @Bean + MovieRepository createMockRepository() { + MovieRepository mockRepository = mock(MovieRepository.class); + when(mockRepository.save(any())).thenAnswer(invocation -> { + return invocation.getArgument(0); + }); + return mockRepository; + } + } +}