我正在创建一个带有模块的库,当use
'注入一些依赖于目录内容的函数时,我想用不同的目录测试行为。目前,我通过应用程序配置Application.get_env/3
获取目录的路径。
如果我正在更改目录Application.put_env/4
,这意味着我的测试必须按顺序运行,因为这是一个有效的全局值,对吗?
我可以将呼叫存根到Application.get_env/3
吗?或者我应该以另一种方式传递价值? (例如通过use
宏)
答案 0 :(得分:1)
最简单的方法是将值作为参数传递。您的模块可能依赖于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"