如何在Java中使用环境变量在本地测试Azure函数?

时间:2019-02-27 11:08:10

标签: java azure azure-functions

我正在使用VS Code在Java中开发一个Azure函数。 从文档中我得到的印象是,我可以在local.settings.json中添加一个变量,并在本地运行该函数时使用System.getenv(“ someVariable”)进行访问。但这对我总是失败,System.getenv()返回null。

真的会在这里提供任何提示。

1 个答案:

答案 0 :(得分:0)

可能需要查看一些代码,但是您始终可以执行以下操作。基本上,不要直接调用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可能会使事情变得一团糟...

希望这会有所帮助。