Как я могу указать формат в Phoenix.ConnTest?

У меня довольно простой код в контроллере Phoenix. Он делает некоторые вещи и возвращает контент в зависимости от формата:

def delete(conn, _params) do
  # some stuff here

  if get_format(conn) == "json" do
    conn |> put_status(200) |> json(%{})
  else
    conn |> redirect(to: "/")
  end
end

Он работает нормально, но у меня проблема с его тестированием. Я не могу проверить возврат HTML. Как мне это сделать? dispatch / 5 не имеет ничего общего с форматом.

1 ответ

Решение

Формат определяется через accept заголовок для подключения, а не для get или что угодно. Для форматов JSON и HTML это должно быть application/json или же html/textсоответственно.

Вы можете использовать это conn в ваших тестах:

conn = build_conn
  |> Plug.Conn.put_req_header("accept", "text/html")
Другие вопросы по тегам