Считается, что у плохой практики есть аргумент parent_pid
для большинства функций handlecast и handleinfo в производстве?Elixir test genserver - Передача родительского PID
Я проверяю так:
parent = self()
GenServer.cast(UserServer.via_tuple(user.id), {:update_direct, parent})
assert_receive :updating_failed, 2000
А потом genserver (с простой повторной попытки издеваться):
def handle_cast(..... parent) do
case updated do
false -> Process.send_after(self(), {:update_retry, ... parent, retries + 1}, 500)
true -> ...
state
end
end
И, наконец, в handle_info :update_retry
я отправить сообщение обратно в ожидании теста (родитель):
send parent, :updating_failed
Я не уверен на 100%, чего вы хотите достичь, и почему. В то же время отправка ответа pid (независимо от того, является ли он родителем или нет) отвечать звукам для меня законным. – cdegroot