Как издеваться над system.getenv

#mockito

#mockito

Вопрос:

У меня есть код, который использует переменные system.getenv (), как показано ниже:

   String dbId = System.getenv("DB_ID");
  String clusterId = System.getenv("CLUSTER_ID");
  

Мне нужно модульное тестирование с использованием Mockito. Я не могу использовать powermockito. Как я могу сделать?Есть какие-нибудь указания??

Комментарии:

1. Это очень старая дискуссия с множеством ответов / вопросов по всему Интернету. Версия TLDR -> нет, вы не можете этого сделать, поскольку это только с Mockito, обычно люди предлагают вам изменить свой дизайн и переместить статический метод в то, что вы действительно можете издеваться. Или не тестируйте его вообще. В качестве альтернативы — вы можете захотеть написать тест более высокого уровня — настройте фактические переменные среды, чтобы вам не нужно было издеваться. Я не знаю, какой вариант лучше для вас, выбирайте внимательно 🙂

2. Спасибо. На данный момент я абстрагировал статические методы, чтобы я мог протестировать свою логику.

3. Звучит неплохо! Это также может быть лучшим дизайном — снимающим ответственность за чтение системных переменных среды из того места, где вы фактически используете их в своей бизнес-логике.