Как локально протестировать функции Azure с переменными среды в Java? - PullRequest
0 голосов
/ 27 февраля 2019

Я разрабатываю функцию Azure в Java с VS Code.Из документации у меня сложилось впечатление, что я могу добавить переменную в local.settings.json и получить к ней доступ через System.getenv ("someVariable") при локальном запуске функции.Но это всегда терпит неудачу для меня, и System.getenv () возвращает ноль.

Действительно оценил бы любые подсказки здесь.

1 Ответ

0 голосов
/ 27 февраля 2019

Может потребоваться увидеть код, но вы всегда можете сделать что-то вроде следующего.По сути, не вызывайте System.getenv(...) напрямую, скрывайте это за вызовом метода, например ...

public class Func {
    ...

    protected String getSetting(String setting) {
        return System.getenv(setting);
    }

    ...

    public ? theFunction(...args...) {
        String widgets = getSetting("widgets");

        ...
    }
}

Для модульного тестирования вы можете переопределить getSetting, например ...

public class FuncTest {
    private Func classUnderTest;
    private Map<String, String> overriddenSettings = new HashMap<>();

    @Before
    public void setup() {
        classUnderTest = new Func() {
            @Override
            protected String getSetting(String setting) {
                return overriddenSettings.get(setting);
            }
        };
    }

    @Test
    public void shouldDoSomethingWhenThereAre10Widgets() {
        overriddenSettings.put("widgets", "10");

        classUnderTest.theFunction(...);

        ...
    }
}

Вы также можете использовать PowerMock для моделирования метода System.getenv, но PowerMock может иногда создавать беспорядок, по моему мнению ...

Надеюсь, это поможет.

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