Как указать формат в 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 не имеет ничего общего с форматом.


person asiniy    schedule 19.09.2016    source источник


Ответы (1)


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

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

conn = build_conn
  |> Plug.Conn.put_req_header("accept", "text/html")
person asiniy    schedule 19.09.2016
comment
Когда кто-то говорит «тест», читатели обычно ожидают assert и/или doctest или любого другого теста, а не простое задание, которое всегда работает. - person Aleksei Matiushkin; 19.09.2016