Здравствуйте, я хочу сделать интеграционный тест для моей базы данных в h2. Но у меня проблемы с моим методом. Мой код интеграционного теста:
@RunWith(SpringRunner.class)
@DataJpaTest
public class Team_database_integration_test {
@MockBean
private TeamRepository teamRepository;
@Autowired
private TestEntityManager testEntityManager;
@Test
public void testDb() {
Team team = new Team(1L, "teamName", "teamDescription", "krakow", 7);
testEntityManager.persist(team);
testEntityManager.flush();
Assert.assertEquals(1L, teamRepository.findById(team.getId()));
}
}
Моя ошибка:
java.lang.AssertionError:
Expected :1
Actual :Optional.empty
Я думаю, причина кроется в моем методе обслуживания findbyid:
public Optional<TeamDto> findTeamById(Long id) {
Assert.notNull(id, "ID must exist ");
return teamRepository
.findById(id)
.map(p -> modelMapper.map(p, TeamDto.class));
}
Значит, мой сервисный код не имеет значения? в сервисе у меня есть метод findteambyid, но я использую findById. Но ошибка означает необязательный. Пустой
Мне непонятна структура вашего проекта. Я предполагаю, что у вас есть класс Service, который внедряет TeamRepository. И вы пытаетесь имитировать репозиторий в своем коде, чтобы использовать db в памяти. Первый вопрос: какой сценарий вы пытаетесь проверить с помощью приведенного выше теста? Также в своем утверждении вы пытаетесь сравнить Long с Optional. Это никогда не сработает.
В своем утверждении я пытаюсь сравнить long с long: /
Необязательный. Пустой не длинный :)




В вашем тестовом коде вы используете репозиторий напрямую для выбора данных. Не сервис.