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