【发布时间】:2017-05-26 13:32:31
【问题描述】:
我正在测试 ReST Api 的端点,并且我将 api 密钥存储在代理上,然后我继续从中获取密钥,我首先将代理添加到监督树并且它正在工作但现在我删除它是因为我希望人们使用此代码并且我希望他们自己监督代理(如果不应该这样,请告诉我)现在我正在尝试测试端点并且我得到了403 状态代码显然告诉我它没有从代理中选择 api 密钥,我正在使用 ExUnit 并且我尝试使用 setup_all 回调,但我得到了同样的错误。我没有传递上下文或其他东西,因为我说过,我从代理状态获取密钥。我使用setup_all回调如下:
setup_all do
Module.start_link()
end
也许我需要传递其他东西或者只是用主管初始化它?
编辑:
之前和supervisor一起工作的代码只是一个简单的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
【问题讨论】:
-
您可以发布正在工作的主管代码吗?你模块的
start_link的代码是什么?这个setup_all代码是工作还是抛出错误?如果代理关闭,为什么会收到 403 错误?如果您询问已关闭的代理的状态,代码应该会抛出错误。 -
@Dogbert 我更新了这个问题。不知何故,我不再收到 403 了……
setup_all回调和以前一样。 -
尝试从
setup_all返回:ok。您当前正在返回一个 PID。只需在Module.start_link()行后添加:ok。 -
@Dogbert 哦,是的...就是这样,它完全超出了我的想象,我没有仔细阅读错误消息...感谢您的帮助。
标签: elixir