我正在使用VS Code在Java中开发一个Azure函数。 从文档中我得到的印象是,我可以在local.settings.json中添加一个变量,并在本地运行该函数时使用System.getenv(“ someVariable”)进行访问。但这对我总是失败,System.getenv()返回null。
真的会在这里提供任何提示。
答案 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可能会使事情变得一团糟...
希望这会有所帮助。