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'.
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.