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