Issue while testing Phoenix channel: encoding error (Phoenix.Socket.Message)

Hi guys!

I’m trying to test a Phoenix channel, like below:

ref = push socket, "new_search", %{}
assert_reply ref, :ok, %{}

I got following error:

22:33:17.559 [error] GenServer #PID<0.426.0> terminating
** (Poison.EncodeError) unable to encode value: #Reference<0.1243961306.4228907012.90196>
    (poison) lib/poison/encoder.ex:354: Poison.Encoder.Any.encode/2
    (poison) lib/poison/encoder.ex:213: anonymous fn/4 in Poison.Encoder.Map.encode/3
    (poison) lib/poison/encoder.ex:214: Poison.Encoder.Map."-encode/3-lists^foldl/2-0-"/3
    (poison) lib/poison/encoder.ex:214: Poison.Encoder.Map.encode/3
    (poison) lib/poison.ex:41: Poison.encode!/2
    (phoenix) lib/phoenix/transports/websocket_serializer.ex:25: Phoenix.Transports.WebSocketSerializer.encode!/1
    (phoenix) lib/phoenix/channel/server.ex:151: Phoenix.Channel.Server.reply/5
    (phoenix) lib/phoenix/channel/server.ex:287: Phoenix.Channel.Server.handle_result/2
    (stdlib) gen_server.erl:616: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:686: :gen_server.handle_msg/6
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: %Phoenix.Socket.Message{event: "new_search", payload: %{}, ref: #Reference<0.1243961306.4228907012.90196>, topic: "search:1432"}

Does reference value should be a plain string?

Versions I use:
Elixir: 1.4.5
Erlang/OTP: 20
Phoenix: 1.2.1
Poison: 2.2

Thanks for any help/hint :slight_smile:

Thread can be closed, my bad, I used wrong form of socket - one should build new socket with Phoenix.ChannelTest.socket/0/Phoenix.ChannelTest.socket/2 macros (or just socket in case ChannelCase is used/imported).

Reference: https://hexdocs.pm/phoenix/testing_channels.html#content (“The Setup Block” section)