Study
Phoenix

Testing (ExUnit + Phoenix.ConnTest)

Penjelasan

ExUnit adalah framework testing bawaan Elixir, dan Phoenix menyediakan tambahan Phoenix.ConnTest berisi helper seperti get/2, post/2, dan html_response/2 untuk mensimulasikan request HTTP ke controller tanpa menjalankan server sungguhan. Test case biasanya diletakkan di test/nama_app_web/controllers/ dan mengikuti pola use NamaAppWeb.ConnCase. Untuk LiveView, tersedia Phoenix.LiveViewTest dengan helper seperti live/2 untuk membuka koneksi LiveView tersimulasi, render_click/2 untuk mensimulasikan klik tombol, dan assert has_element?/2 untuk memeriksa hasil render. Kombinasi ini memungkinkan test end-to-end yang cepat karena tidak perlu browser sungguhan.

Contoh Konsep

defmodule TokoAppWeb.ProdukControllerTest do
  use TokoAppWeb.ConnCase

  test "GET /produk menampilkan daftar produk", %{conn: conn} do
    conn = get(conn, ~p"/produk")
    assert html_response(conn, 200) =~ "Daftar Produk"
  end
end

defmodule TokoAppWeb.CounterLiveTest do
  use TokoAppWeb.ConnCase
  import Phoenix.LiveViewTest

  test "tombol tambah menaikkan hitungan", %{conn: conn} do
    {:ok, view, _html} = live(conn, ~p"/counter")
    assert view |> element("button") |> render_click() =~ "Hitungan: 1"
  end
end

Praktikum

Tulis test untuk memastikan GET /artikel mengembalikan status 200 dan mengandung teks 'Daftar Artikel'.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Jalankan mix test --failed untuk hanya menjalankan ulang test yang gagal pada run sebelumnya, mempercepat iterasi saat debugging.