Latihan 1 dari materi Flaky Tests & Isolasi di Testing — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Perbaiki counter yang flaky dengan menyuntikkan sumber acaknya dari luar.
Lengkapi createCounter(rng) supaya mengembalikan object dengan:
property value yang mulai dari 0
method increment() yang memanggil rng(), lalu menambah value sebanyak 1 kalau hasilnya lebih dari 0.5, dan gak mengubah apa pun kalau sebaliknya
Pakai rng() yang disuntikkan, bukan Math.random(). Simpan hitungannya di dalam object counter, bukan di variabel global.
deterministicTest() di kode awal sudah membuat counter dengan RNG yang selalu mengembalikan 0.9, memanggil increment() tiga kali, lalu mengembalikan counter.value. Biarkan: hasilnya harus 3.
Baris console.log(deterministicTest()) juga sudah ada, jadi console harus mencetak 3.
Hint
Test-nya flaky karena hasilnya bergantung angka acak yang gak dikendalikan test. Kalau angka acaknya datang dari parameter, test bisa memilih jawabannya sendiri.
createCounter(rng) mengembalikan object { value: 0, increment() { ... } }. Di dalam increment, panggil rng() dan bandingkan dengan 0.5, lalu tambah this.value.