Проверка конфигурации пружины с аннотацией ConditionalOnCloudPlatform - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь протестировать мой класс конфигурации Spring, который помечен ConditionalOnCloudPlatform.

Вот очень упрощенный пример класса конфигурации (я не могу опубликовать свой фактический код):

@Configuration
@ConditionalOnCloudPlatform(CloudPlatform.CLOUD_FOUNDRY)
public class CloudConfigurationExample {
  @Bean
  public MyBean myBean(MyProperties properties) {
    return new MyBean(properties.getParam);
  }
}

Для тестирования я надеялся сделать это:

@RunWith(MockitoJUnitRunner.class)
public class CloudConfigurationExampleTest {
  private CloudConfigurationExample cloudConfigurationExample;
  private MyProperties myProperties;

  @Before
  public void setUp() {
    myProperties = new MyProperies();
    myProperties.setParam("test");
    cloudConfigurationExample = new CloudConfigurationExample(myProperties);
  }

  @Test
  public void test() {
    MyBean myBean = cloudConfigurationExample.myBean();
    // do asserts etc.
  }

}

У меня проблема в том, что ConditionalOnCloudPlatform активирован и ожидает наличия действующего облачного соединителя.В результате я получаю No suitable cloud connector found.

Кто-нибудь знает правильный путь, чтобы заставить Junit игнорировать эту аннотацию?Я попытался установить переменную окружения с помощью VCAP_SERVICES, чего и ожидает эта аннотация, но она не сработала.

Спасибо!

1 Ответ

0 голосов
/ 07 марта 2019

ConditionalOnCloudPlatform активируется, если среда содержит свойства VCAP_APPLICATION и VCAP_SERVICES

Существуют различные способы решения этой проблемы,

Во-первых, убедитесь, что никакие свойства, содержащие вышеуказанные префиксы, не переданы.
Во-вторых, проверьте облачный профиль @Profile("cloud") или игнорируйте этот класс во время теста @Profile("!test") и многих других способов.

фрагмент кода:

CLOUD_FOUNDRY {

        @Override
        public boolean isActive(Environment environment) {
            return environment.containsProperty("VCAP_APPLICATION")
                    || environment.containsProperty("VCAP_SERVICES");
        }

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