Study
Play Framework

Testing Dasar (Play Testing Framework)

Penjelasan

Play menyediakan modul testing (`play.api.test`) yang terintegrasi dengan ScalaTest atau specs2, memudahkan menguji controller tanpa perlu menjalankan server HTTP sungguhan. Helper `FakeRequest` dipakai untuk membuat request palsu dengan method, path, dan body tertentu, lalu di-"kirim" langsung ke Action controller yang diuji. Untuk memverifikasi hasil, `contentAsString(result)` mengambil body response sebagai String, `status(result)` mengambil kode status HTTP, dan `contentAsJson(result)` untuk response JSON. Test seperti ini jauh lebih cepat dibanding integration test penuh yang butuh server berjalan, cocok dipakai sebagai unit test controller sehari-hari.

Contoh Konsep

import org.scalatestplus.play._
import org.scalatestplus.play.guice._
import play.api.test._
import play.api.test.Helpers._

class ProdukControllerSpec extends PlaySpec with GuiceOneAppPerTest {
  "ProdukController GET /produk" should {
    "mengembalikan status 200 dan daftar produk" in {
      val request = FakeRequest(GET, "/produk")
      val result = route(app, request).get

      status(result) mustBe OK
      contentAsString(result) must include("produk")
    }
  }
}

Praktikum

Tulis test untuk Action detail(id: Long) yang memverifikasi request GET /produk/1 mengembalikan status 200.

Editor Latihan

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

Tips

Gunakan GuiceOneAppPerTest (bukan membuat aplikasi manual) agar dependency injection tetap berjalan normal di dalam test, termasuk service dan konfigurasi yang di-inject ke controller.