我正在制作一个带有模块的库,当use
'd 注入一些依赖于目录内容的函数时,我想测试不同目录的行为。目前我通过应用程序配置获取目录的路径Application.get_env/3
。
如果我要更改目录Application.put_env/4
,这意味着我的测试必须按顺序运行,因为这是一个有效的全局值,对吗?
我可以挂断电话Application.get_env/3
吗?还是我应该以另一种方式传递价值?(例如通过use
宏)
我正在制作一个带有模块的库,当use
'd 注入一些依赖于目录内容的函数时,我想测试不同目录的行为。目前我通过应用程序配置获取目录的路径Application.get_env/3
。
如果我要更改目录Application.put_env/4
,这意味着我的测试必须按顺序运行,因为这是一个有效的全局值,对吗?
我可以挂断电话Application.get_env/3
吗?还是我应该以另一种方式传递价值?(例如通过use
宏)
最简单的方法是将值作为参数传入。您的模块可能仅依赖于Application.get_env
缺少传入的值。就像是:
Application.put_env(MyApplication, :some_key, "hello")
defmodule Test do
def test(string \\ Application.get_env(MyApplication, :some_key)) do
IO.inspect(string)
end
end
# Default behaviour
Test.test # => "hello"
# In your tests
Test.test("world") # => "world"