Как сделать интеграционный тест с AWS @EnableRdsInstance - PullRequest
0 голосов
/ 25 ноября 2018

Я новичок в Spring Boot и Spring AWS Cloud.Я пытаюсь завершить этот урок http://www.briansjavablog.com/2016/05/spring-boot-angular-amazon-web-services.html. Несмотря на то, что урок действительно хорош, оказывается, у него нет никакого теста.

Я хотел бы выполнить некоторые интеграционные тесты с RDS в AWS, чтобы убедиться, что соединение в порядке.Я использую следующий класс в качестве конфигурации ресурса AWS:

@Configuration
@ImportResource("classpath:/aws-config.xml")
@EnableRdsInstance(databaseName = "${rds.name}",
        dbInstanceIdentifier = "${rds.instance}",
        password = "${rds.password}",
        username = "${rds.username}")
public class AwsResourceConfig {
}

Я создаю тесты, подобные этому:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles({"test"})
public class EmployeeControllerTest {

    @Autowired
    private MockMvc mvc;

    @MockBean
    private EmployeeRepository employeeRepository;

    @Test
    public void whenGetEmployees_thenEmployeesAreReturned() throws Exception {

        // given
        Employee employee = givenEmployee();
        when(employeeRepository.findAll()).thenReturn(new ArrayList<>(Arrays.asList(employee)));

        // when
        MvcResult result = mvc.perform(get("/employees"))
                .andReturn();

        // then
        assertThat(result.getResponse().getStatus()).isEqualTo(HttpStatus.OK.value());
        assertThat(result.getResponse().getContentAsString()).isNotEmpty();
    }

Но когда я запускаю эти тесты, кажется, что Spring ищетдля тех заполнителей, которые будут созданы.Я пытался добавить их в нескольких местах, но безуспешно.Я получил следующую ошибку:

Причина: org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем '$ {rds.instance}': сбой вызова метода init;вложенное исключение: com.amazonaws.services.rds.model.AmazonRDSException: неверный идентификатор базы данных: $ {rds.instance} (служба: AmazonRDS; код состояния: 400; код ошибки: InvalidParameterValue; код запроса: e83246b2-bba4-4b5f-87ec-13851f0dd711)

Когда я запускаю это приложение локально, оно работает, как и ожидалось, только при запуске тестов.Ты знаешь почему?Пожалуйста, не стесняйтесь спрашивать о любом другом ресурсе, если он вам нужен.

Спасибо!

...