Latihan 1: Testing Kode Asinkron — Testing

Latihan 1 dari materi Testing Kode Asinkron di Testing — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi dua function di kode awal. Baris terakhir, testAmbilData().then(p => console.log(p));, sudah ada, biarkan begitu.

  1. ambilData(url) mengembalikan new Promise((resolve, reject) => { ... }) dengan tiga cabang:
    • url memuat users (cek dengan url.includes("users")): resolve({ data: ["Budi", "Siti"] })
    • url memuat error: reject(new Error("Gagal mengambil data"))
    • selain itu: resolve({ data: [] })
  2. testAmbilData() adalah function async yang menguji tiga kasus dengan await dan menambah passed untuk tiap kasus yang benar:
    • await ambilData("/users") hasilnya punya data.length 2
    • await ambilData("/error") ditolak: tangkap dengan try/catch, lalu cek e.message === "Gagal mengambil data"
    • await ambilData("/other") (url lain) hasilnya punya data.length 0
    • di akhir, return passed

Kalau ketiganya benar, testAmbilData() mengembalikan 3 dan console mencetak 3. ambilData juga dicek langsung dengan "/users", "/error" dan "/kosong", jadi hasilnya harus keluar dari cabang-cabangnya, bukan angka yang diketik.

Hint