Testing Dasar (Yesod Test)
Penjelasan
yesod-test adalah library testing yang memungkinkan kita mensimulasikan request HTTP penuh ke aplikasi Yesod tanpa menjalankan server sungguhan, memakai kombinasi Hspec sebagai runner test dan helper seperti get, statusIs, dan htmlAnyContain. Test biasanya diletakkan di folder test/ dan dijalankan dengan stack test. yesod-test juga mendukung simulasi form submission lewat fungsi seperti request dengan addToken (untuk menyertakan CSRF token otomatis) dan byLabel untuk mengisi field form berdasarkan label-nya, sehingga kita bisa menguji alur lengkap dari menampilkan form sampai submit dan verifikasi hasilnya tersimpan di database.
Contoh Konsep
spec :: Spec
spec = withApp $ do
describe "Halaman Produk" $ do
it "menampilkan daftar produk dengan status 200" $ do
get ProdukR
statusIs 200
htmlAnyContain "h1" "Daftar Produk"
it "berhasil membuat produk baru" $ do
get ProdukNewR
request $ do
setMethod "POST"
setUrl ProdukNewR
addToken
byLabel "Nama" "Sepatu"
byLabel "Harga" "250000"
statusIs 303
Praktikum
Tulis test yang memastikan GET ArtikelR mengembalikan status 200 dan mengandung heading 'Daftar Artikel'.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu panggil addToken sebelum request POST/PUT/DELETE di test, karena proteksi CSRF bawaan Yesod akan menolak request tanpa token valid meskipun di lingkungan test.