Мокинг репозиториев для тестирования сервиса весной - PullRequest
0 голосов
/ 30 мая 2020

У меня произошли некоторые сбои после попытки имитировать репозитории для модульного тестирования моих сервисов в Spring-Boot Thats, что у меня есть (упрощено)



@ExtendWith(SpringExtension.class)
@ExtendWith(MockitoExtension.class)
@SpringBootTest
@ActiveProfiles("test")
public class UserTest{


    @InjectMocks
    private UserServiceImpl userService;

    @Mock
    private UserRepostiory userRepository;

    @Before
    public void setUp() {
       User user = new User(1L, "email@email", "name");
        when(userRepostitory.findById(1L)).thenReturn(Optional.of(user));
    }


    @Test
    public void findUserByIdReturnsUser() {

        User user = userService.getById(1L); => always throws error in Service, that no User is found with that Id, it calls the regular Repository: mock does nothing
        assertEquals(1L,user.getId());

    }
}

Но я никогда не возвращаю пользователя, когда служба вызывает репо . Я новичок в модульном тестировании, и я почти уверен, что здесь что-то пропустил.

Ответы [ 2 ]

1 голос
/ 30 мая 2020

В setUp вы делаете:

when(userRepostitory.findById(1L)).thenReturn(Optional.of(user));

Но в тесте вы вызываете

User user = userService.getById(1L);

Либо имитируйте getById, либо вызывайте findById

0 голосов
/ 30 мая 2020

Добавьте в тестовый класс аннотацию @RunWith(SpringRunner.class)

...