Я учусь тестировать в эликсире, и появилась эта проблема:
Когда я запускаю следующий тест, иногда он проходит, а иногда нет, я думаю, это тот факт, что у Supervisor нет времени для перезапуска GenServer:
test "Supervisor will revive the dead gensever" do
{:ok, pid} = KV.Supervisor.start_link([])
KV.RegistryClient.create KV.RegistryClient, "wallet"
[h | _] = Supervisor.which_children(pid)
{KV.RegistryClient, pid_reg, _, _} = h
send(pid_reg, :insta_kill)
assert %{active: 1} = Supervisor.count_children(pid)
end
Когда происходит, это ошибка:
1) test Supervisor will revive the dead gensever (KV.RegistryTest)
test/kv/registry_test.exs:35
match (=) failed
code: assert %{active: 1} = Supervisor.count_children(pid)
right: %{active: 0, specs: 1, supervisors: 0, workers: 1}
stacktrace:
test/kv/registry_test.exs:41: (test)
Как мне предотвратить это? Тайм-аут - это хороший подход?