1

我正在制作一个带有模块的库,当use'd 注入一些依赖于目录内容的函数时,我想测试不同目录的行为。目前我通过应用程序配置获取目录的路径Application.get_env/3

如果我要更改目录Application.put_env/4,这意味着我的测试必须按顺序运行,因为这是一个有效的全局值,对吗?

我可以挂断电话Application.get_env/3吗?还是我应该以另一种方式传递价值?(例如通过use宏)

4

1 回答 1

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"
于 2015-05-23T11:12:45.597 回答