я прохожу эликсир «Приступая к работе» учебник, в котором используется следующий фрагмент кода:Ошибка синхронизации в учебнике Elixir GenServer?
test "removes buckets on exit", %{registry: registry} do
KV.Registry.create(registry, "shopping")
{:ok, bucket} = KV.Registry.lookup(registry, "shopping")
Agent.stop(bucket)
assert KV.Registry.lookup(registry, "shopping") == :error
end
Теперь create/2
использует cast
операцию, тогда как lookup
использует call
. Таким образом, это означает, что выполняется асинхронный вызов, а затем сразу же после этого успешно выполняется синхронный вызов, предполагающий асинхронное действие. Могут ли временные проблемы привести к сбою теста, когда сам код верен, или есть ли какой-то аспект cast
и call
, что мне не хватает?