Весенний тест на впрыск: боб не вводится на тест - PullRequest
0 голосов
/ 29 октября 2018

Я создал эту пользовательскую конфигурацию теста:

@TestConfiguration
public static class RestTemplateTestConfiguration {

    @Bean
    @Primary
    public static ApplicationDao applicationDao() {
        ApplicationDao mock = Mockito.mock(ApplicationDao.class);
        // some stuff code
        return mock;
    }
}

Я установил точку останова на applicationDao, но она никогда не достигается, и, следовательно, макет никогда не вводится.

EDIT

ApplicationDao - это аннотированный класс @Repository:

@Repository
public interface ApplicationDao extends MongoRepository<Application, String> {

Итак, как я могу переопределить этот @Repository аннотированный AplicationDao?

В настоящее время я получаю это сообщение, когда начинается весна:

Пропуск определения бина для [BeanMethod: name = applicationDao, declaringClass = net.gencat.transversal.espaidoc.functional.references.GroupReferencesTest $ RestTemplateTestConfiguration]: определение для bean 'applicationDao' уже существует. Это определение bean-объекта верхнего уровня считается переопределением.

Есть идеи?

1 Ответ

0 голосов
/ 29 октября 2018

Если ваш метод applicationDao() никогда не вызывается, это означает, что ваша весенняя загрузка не сканирует пакет, в котором находится RestTemplateTestConfiguration.

Самое простое решение - переместить конфигурацию в тот же пакет (или его дочерние элементы), что и тот, который содержит класс, помеченный @SpringBootApplication.

OBS: это правило применяется, даже если конфигурация находится в каталоге test вместо main.

Другим решением является добавление @ComponentScan с пакетом конфигурации или использование @Import(RestTemplateTestConfiguration.class) на уровне тестирования весенней загрузки.

SUGGESTION: Для решения вашей проблемы вы можете использовать:

@Mock
ApplicationDao applicationDao;

и если у вас есть другой сервис, который использует этот для использования:

@InjectMock
MyService myService;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...