Elixir 如何在Phoenix LiveView中测试句柄_info/2?
凤凰卫视奇才们好 是一种普遍的行为。如果您阅读文档,您可以找到: 除了提供的同步和异步通信 以及通过以下功能发送的“常规”消息: ,以及类似的,可以在内部处理 回调Elixir 如何在Phoenix LiveView中测试句柄_info/2?,elixir,phoenix-framework,functional-testing,phoenix-channels,phoenix-live-view,Elixir,Phoenix Framework,Functional Testing,Phoenix Channels,Phoenix Live View,凤凰卫视奇才们好 是一种普遍的行为。如果您阅读文档,您可以找到: 除了提供的同步和异步通信 以及通过以下功能发送的“常规”消息: ,以及类似的,可以在内部处理 回调 因此,只要您知道流程的pid,您就可以发送其中任何一个。经过大量研究、反复试验、错误、错误(迭代),我们提出了以下测试: test "handle_info/2", %{conn: conn} do {:ok, view, disconnected_html} = live(conn, "/") assert disconn
因此,只要您知道流程的
pid
,您就可以发送其中任何一个。经过大量研究、反复试验、错误、错误(迭代),我们提出了以下测试:
test "handle_info/2", %{conn: conn} do
{:ok, view, disconnected_html} = live(conn, "/")
assert disconnected_html =~ "Count: 0"
assert render(view) =~ "Count: 0"
send(view.pid, %{payload: %{ val: 1 }})
assert render(view) =~ "Count: 1"
end
感谢@daniel为我们指明了send/2
功能的方向以及@AlekseiMatiushkin耐心地提出上述探究性问题。“你能详细说明什么是不清楚的吗?”AlekseiMatiushkin感谢你的快速回复。尚不清楚如何设置测试文件,然后调用
handle\u event/3
函数。但是从重新读取文档来看,我们似乎没有直接调用函数,而是通过渲染\u单击(视图,:inc)
处理\u事件/3
对到达LV进程的消息进行回调,这意味着你永远不想通过直接调用来测试它。更新了问题以反映测试handle\u info/2
功能的挑战。感谢你为我们指明了正确的方向@Daniel