Spring boot: как добавить репозитории spring-data в тесты - PullRequest
0 голосов
/ 29 января 2019

В тестах я могу добавить любой компонент (используя статический вложенный класс конфигурации).но как я могу добавить репозитории данных Spring?тогда я не могу вернуться как новый бин, потому что не могу их создать - это интерфейсы

@RunWith(SpringRunner.class)
@DataMongoTest
//@SpringBootTest   // or this annotation
public class JTest {

    @Configuration
    static class Config {

        static class TestEntity {
            String id;
        }

        interface TestRepository extends ReactiveMongoRepository<TestEntity, String> {}

    }

    @Autowired Config.TestRepository testRepository;

    @Test
    public void test() {}
}

, работающие с @DataMongoTest, которые дают мне

Причина: java.lang.IllegalStateException: Невозможно извлечь базовые пакеты @EnableAutoConfiguration

, работающие с @SpringBootTest, дают:

Причина: org.springframework.beans.factory.NoSuchBeanDefinitionException:доступен квалифицирующий компонент типа 'xxx.JTest $ Config $ TestRepository': ожидается, что по крайней мере 1 компонент будет квалифицирован как кандидат для автоматической передачи.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)}

как добавить новые репозитории в тесты?

1 Ответ

0 голосов
/ 29 января 2019

Spring не выбирает вложенный интерфейсный репозиторий (и создает экземпляр компонента) по умолчанию.Чтобы включить, см .:

@RunWith(SpringRunner.class)
@DataMongoTest
@EnableMongoRepositories(considerNestedRepositories = true)
public class JobTest {

    @TestConfiguration
    static class Config {

        static class TestEntity {
            String id;
        }
    ....

Внутренне Spring регистрирует bean-компонент с new SimpleMongoRepository<T, ID>(..), если не указано иное.

Edit Только что понял, что вы используете реактивный Mongo.Так что вместо этого переключитесь на EnableReactiveMongoRepositories(..).

...