如何解决“没有与%Phoenix.Socket.Broadcast {}匹配的消息”?

时间:2019-04-16 10:30:45

标签: sockets elixir phoenix-framework phoenix-channels

MyApp.Endpoint.broadcast(@topic, @event, @payload) 似乎不适用于我的Controllers,只能在Channels中工作。

我的控制器

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天里一直在努力使它工作……没有任何错误……它只是没有按预期的方式工作……

有帮助吗?....

0 个答案:

没有答案