Запуск тестов без автоматической настройки базы данныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запуск тестов без автоматической настройки базы данных

Сообщение Anonymous »

В тесте я хочу отправить запрос и проверить полезную нагрузку ответа. Я хочу выполнить весь поток Request -> ReaderController -> ReaderService -> ReaderRepository и обратно. Здесь я не хочу, чтобы репозиторий попадал в базу данных, а имитирую функцию репозитория, чтобы она возвращала нужное мне значение.
На данный момент у меня есть этот код ниже. Я отключил конфигуратор Hibernate, чтобы остановить попытку тестовой службы подключиться к реальному экземпляру postgresql по адресу http://localhost:5432. Без исключения HibernateJpaAutoConfiguration тест завершится неудачей из-за сбоя подключения к http://localhost:5432.

Код: Выделить всё

@SpringBootTest
@EnableAutoConfiguration(exclude = {
HibernateJpaAutoConfiguration.class
})
public class ReaderControllerTest {

@MockBean
private ReaderRepository readerRepository;

@Autowired
private MockMvc mockMvc;

@Test
void createUserTest() throws Exception {
var newReader = new Reader();
newReader.setName("user");
newReader.setEmail("user@email.com");

Mockito.when(readerRepository.save(null)).thenReturn(newReader);

mockMvc
.perform(
post("/user").contentType("application/json").content("{\"name\": \"test\"}"))
.andExpect(status().isOk());
}
}
Однако приведенный выше код также не работает, поскольку компонент для ReaderRepository не найден, поскольку я отключил HibernateJpaAutoConfiguration.

Код: Выделить всё

Error creating bean with name 'bookController': Unsatisfied dependency expressed through field 'bookService': Error creating bean with name 'bookServiceImpl': Unsatisfied dependency expressed through field 'bookRepository': Error creating bean with name 'bookRepository' defined in com.example.demo.repository.BookRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'

Код: Выделить всё

@MockBean
в тесте ReaderRepository, по-видимому, не имеет никакого эффекта.

Код: Выделить всё

@MockBean
private ReaderRepository readerRepository;
Я хочу, чтобы тест был легким и выполнялся как можно быстрее, поэтому я не хочу включать Testcontainer.

Подробнее здесь: https://stackoverflow.com/questions/788 ... figuration
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»