我试图在我的测试中添加一个新的环境变量,但我看到了
sys.env
是一个不可变的映射,所以我看不到添加新的env var的方法。
知道怎么做?
答案 0 :(得分:2)
您正在测试的代码不应直接依赖sys.env
。将environment: Map[String, String]
作为参数 - 然后您可以传递所需的任何数据进行测试,同时仍在生产中使用sys.env
。
答案 1 :(得分:1)
虽然这是一个不同的问题,但我认为this answer适用: 您无法修改当前进程的环境(即它是只读的)。
正如Dima所说,您可以使用地图来保存属性,或者像我提到的答案一样,使用scala.util.Properties,这样您就可以访问当前的env,并允许您设置自己的属性。 / p>
如果使用属性绝对不是一个选项,并且你真的需要为所有测试设置一些环境变量,也许你可以使用SBT来做到这一点,如下所示:
fork in Test := true
envVars in Test := Map("ENV_VAR" -> "value")
fork
部分至关重要。否则,测试将在当前进程中运行,并且不会获取新的环境变量。