我正在测试端点到ReST Api并且我将api密钥存储在代理上,然后我继续从中获取密钥,我首先将代理添加到监督树,它正在工作但现在我删除了它,因为我希望人们使用这个代码,我希望他们自己监督代理(如果它不应该那样,让我知道),现在我正在尝试测试端点,我得到了一个403状态代码显然告诉我它没有从代理中选择api密钥,我正在使用ExUnit并且我尝试使用setup_all
回调但是我得到了相同的错误。我没有传递上下文或者某些东西,因为我说的是,我从代理状态获取密钥。我使用setup_all
回调如下:
setup_all do
Module.start_link()
end
也许我需要传递别的东西或者只是用Supervisor初始化它?
编辑:
之前与主管合作的代码只是一个简单的主管:
import Supervisor.Spec
children = [
worker(Valvex, [])
]
Supervisor.start_link(children, strategy: :one_for_one) # Obviously this is not the whole module.
模块start_link
的代码只是:
def start_link do
start_link(Application.get_env(:valvex, :token, System.get_env("STEAM_TOKEN")))
end
def start_link(key) do
Agent.start_link(fn -> key end, name: __MODULE__)
end
奇怪的是错误代码改变了,我现在没有得到403。我没有触摸任何东西,我现在收到此错误
(RuntimeError) expected ExUnit callback in ValvexTest to return :ok | keyword | map, got #PID<0.207.0> instead
答案 0 :(得分:1)
ExUnit希望setup_all
返回:ok
,关键字列表或地图中的一个。此值与所有其他setup_all
和setup
块的返回值合并,并作为上下文传递给每个测试。如果您不想在上下文中添加任何内容,只需在:ok
行之后添加Module.start_link()
:
setup_all do
Module.start_link()
:ok
end
您可能希望断言代理已成功启动,在这种情况下您可以执行以下操作:
setup_all do
{:ok, _pid} = Module.start_link()
:ok
end