Study
Luau

Unit Testing Dasar (Konsep)

Penjelasan

Unit testing di Luau bertujuan sama seperti di bahasa lain: memvalidasi bahwa sebuah fungsi menghasilkan output yang benar untuk berbagai input, secara otomatis dan berulang, tanpa harus menjalankan game secara manual tiap kali ada perubahan kode. Karena Luau tidak punya framework testing bawaan seperti beberapa bahasa lain, pola paling dasar adalah menulis fungsi assert sederhana sendiri, atau menggunakan library komunitas seperti TestEZ yang populer di ekosistem Roblox. Fungsi murni (pure function) — yang hasilnya cuma bergantung pada input, tanpa menyentuh state Instance atau dunia game — jauh lebih mudah ditest dibanding fungsi yang bergantung pada `workspace` atau `game.Players`, karena tidak butuh setup lingkungan Roblox yang rumit hanya untuk menguji logic murni seperti perhitungan.

Contoh Konsep

-- Fungsi murni yang mudah ditest
local function hitungDamage(serangan: number, pertahanan: number): number
    return math.max(serangan - pertahanan, 0)
end

-- Fungsi assert sederhana buatan sendiri
local function assertSama(hasil, ekspektasi, pesan)
    if hasil ~= ekspektasi then
        error(pesan .. " - dapat: " .. tostring(hasil) .. ", diharapkan: " .. tostring(ekspektasi))
    else
        print("LULUS: " .. pesan)
    end
end

assertSama(hitungDamage(50, 20), 30, "damage normal")
assertSama(hitungDamage(10, 20), 0, "damage tidak boleh negatif")

Praktikum

Tulis fungsi murni hitungDiskon(harga, persenDiskon) lalu buat minimal 3 assertSama untuk menguji kasus normal, diskon 0%, dan diskon 100%.

Editor Latihan

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

Tips

Pisahkan logic murni (kalkulasi, aturan game) dari kode yang menyentuh Instance Roblox langsung — susunan ini membuat sebagian besar logic penting bisa ditest tanpa perlu menjalankan Roblox Studio sama sekali.