我目前正在努力处理混合配置值(特别是在运行测试时)。这是我的场景:
- 我有一个客户端库,带有一些常见的配置值(密钥、秘密、区域)。
- 我想测试没有区域值设置时会发生什么
- 我没有
test.exs
文件/config
我目前正在这样做(这不起作用)。正在测试的模块(简化):
defmodule Streamex.Client do
@api_region Application.get_env(:streamex, :region)
@api_key Application.get_env(:streamex, :key)
@api_secret Application.get_env(:streamex, :secret)
@api_version "v1.0"
@api_url "api.getstream.io/api"
def full_url(%Request{} = r) do
url = <<"?api_key=", @api_key :: binary>>
end
end
测试:
setup_all do
Streamex.start
Application.put_env :streamex, :key, "KEY"
Application.put_env :streamex, :secret, "SECRET"
Application.put_env :streamex, :secret, ""
end
运行时发生的情况mix test
是,从这些值设置属性的主模块抛出以下错误,因为它找不到有效值:
lib/streamex/client.ex:36: invalid literal nil in <<>>
我还在开始,所以这看起来很明显,但是在阅读文档后我找不到解决方案。