Как исправить «Нет сообщений, соответствующих% Phoenix.Socket.Broadcast {}»? - PullRequest
0 голосов
/ 16 апреля 2019

MyApp.Endpoint.broadcast(@topic, @event, @payload) Кажется, не работает в моих контроллерах, только в каналах.

Мой контроллер

defmodule MyApp.ClientRequestController do
    use MyApp, :controller

    def create(conn, _) do
       MyApp.Endpoint.broadcast!(@topic, @event, @payload)
       conn
    end
end

Проверка контроллера

defmodule MyApp.ClientRequestControllerTest do
    use MyApp.ConnCase

    test "dispatch event", %{conn: conn} do 
      assert_receive %Phoenix.Socket.Broadcast{}
    end

end

Ошибка при попытке проверить полученное сообщение

No message matching %Phoenix.Socket.Broadcast{}

Process mailbox:
       {#Reference<0.2732378465.3402629121.237765>,.....

Мой канал

defmodule MyApp.DashboardChannel do
    use MyApp, :channel
    alias MyApp.Endpoint

    Endpoint.broadcast!(@topic, @event, @payload)
end

Тест Мой канал

defmodule MyApp.DashboardChannelTest do
    use MyApp.ChannelCase

    test "send current status when join topic successfully", %{socket: socket} do
        {:ok, _, _socket} = subscribe_and_join(socket, @topic, %{})

        assert_broadcast @event, @payload

end

И тест канала проходит ...

События, передаваемые с моего контроллера, должны быть доступны в окне сообщений при тестировании контроллера ... но они не ... В окне сообщения отображаются только события, переданные с MyApp.dashboardChannel ...

Просто не знаю, что я делаю не так ... Последние 3 дня пытался заставить это работать ... Никаких ошибок ... просто не работает, как ожидалось ...

Любая помощь? ....

...