我正在測試一個端點到一個ReST Api,並且我將這個API密鑰存儲在一個代理上,然後我繼續從中獲取密鑰,我首先將該代理添加到監督樹並且它的工作,但現在我刪除它,因爲我希望人們使用這個代碼,我希望他們自行監督代理人(如果它不應該是這樣的,讓我知道),現在我想測試端點我得到一個403狀態代碼,顯然告訴我,它不是從代理中選擇api密鑰,我使用ExUnit,並試圖使用setup_all
回調,但我得到了同樣的錯誤。我沒有通過上下文或什麼,因爲我說如何,我從代理狀態獲得密鑰。我用setup_all
回調如下:Elixir - 要測試的起始代理
setup_all do
Module.start_link()
end
也許我需要別的東西傳遞或只是與主管初始化呢?
編輯:
這是與上司的工作之前,只是一個簡單的管理者代碼:
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
@Dogbert我更新了這個問題。不知何故,我再也沒有得到403's了......'setup_all'回調和以前一樣。 – Aguxez
嘗試從'setup_all'返回':ok'。您目前正在返回一個PID。只需在'Module.start_link()'行後添加':ok'即可。 – Dogbert