Spring Boot Test / Spock - настроить пользовательский контекст с автоматически настроенной базой данных H2 - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь связать свой собственный Spring Context для целей тестирования, используя автоматически сконфигурированную базу данных H2. Когда я пытаюсь заставить Spring Data создать собственную реализацию хранилища, с помощью приведенного ниже кода я получаю:

No qualifying bean of type 'com.project.NodesRepository' available: expected at least 1 bean which qualifies

Как я могу использовать свой собственный пользовательский контекст, работающий во встроенном Tomcat с автоконфигурированной базой данных?

@SpringBootTest(classes = NodeConfiguration.class)
class NodeManagementAcceptanceSpec extends IntegrationSpecification {

    @Autowired
    private NodesRepository nodesRepository;

    def "one plus one should equal two"() {
        expect:
        1 + 1 == 2
        System.out.println("nodeRepository has been initialized!")
    }

}

Конфигурация узла:

@Configuration
@Import(MariaDBConfiguration.class)
class NodeConfiguration {

    @Bean
    public NodeController nodeController(NodeApplicationService nodeApplicationService) {
        return new NodeController(nodeApplicationService);
    }

    @Bean
    public NodeApplicationService nodeApplicationService(NodeDomainService nodeDomainService, PatrolSourceViewDomainService patrolSourceViewDomainService,
                                                         NodeMapper nodeMapper, PatrolMapper patrolMapper, SourceMapper sourceMapper) {
        return new DefaultNodeApplicationService(nodeDomainService, patrolSourceViewDomainService, nodeMapper, patrolMapper, sourceMapper);
    }

    @Bean
    public NodeDomainService nodeDomainService(NodesRepository nodesRepository) {
        return new NodeDomainService(nodesRepository);
    }

    @Bean
    public PatrolSourceViewDomainService patrolSourceViewDomainService(PatrolSourceViewRepository patrolSourceViewRepository,
                                                                       PatrolRepository patrolRepository,
                                                                       SourcesRepository sourcesRepository,
                                                                       ViewRepository viewRepository) {
        return new PatrolSourceViewDomainService(patrolSourceViewRepository, patrolRepository, sourcesRepository, viewRepository);
    }

}

Конфигурация MariaDB:

@EnableJpaRepositories
@Configuration
public class MariaDBConfiguration {

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @Value("${spring.datasource.driver-class-name}")
    private String driver;


    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .url(url)
                .username(username)
                .password(password)
                .driverClassName(driver)
                .build();
    }

}
...