Lompat ke konten utama
←

Backend Node.js Dasar: Rute, Middleware, dan Pengujian

Pelajaran 15 dari 16

Pengujian handler dengan request tiruan

Tiruan untuk repositori, jam, dan next

Setelah pelajaran ini kamu bisa memberikan repositori dan jam sebagai argumen supaya handler bisa diuji dengan tiruan, menulis spy yang mencatat panggilan, dan menguji middleware dengan next tiruan.

±13 menitDiperiksa 23 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Handler sungguhan bergantung pada hal di luar dirinya: repositori yang menyimpan data, jam, dan pembuat nomor. Bila handler memakai semuanya langsung dari variabel global, tes tidak bisa mengendalikannya; Date.now() memberi angka berbeda setiap saat. Jalan keluarnya: berikan ketergantungan sebagai argumen fungsi pembuat, misalnya buatApp({ repo, jam }). Di produksi yang diberikan repositori basis data dan Date.now; di tes, tiruan.

Panduan Mocking in tests di nodejs.org menggolongkan kandidat tiruan menjadi kode sendiri, kode luar, dan sistem luar seperti basis data dan penyimpanan memori, lalu menunjukkan waktu sebagai hal yang bisa dikendalikan. Istilah test double sudah dibahas di kelas Pengujian Perangkat Lunak. Di sini dipakai dua: fake, repositori di memori yang benar-benar bekerja, dan spy, fungsi pembungkus yang mencatat setiap panggilan. node:test menyediakan spy lewat mock.fn; setiap catatan di mock.calls memuat arguments, result, dan error.

import { mock, test } from "node:test";
import assert from "node:assert/strict";

test("reservasi tidak sah tidak ditulis", () => {
  const tambah = mock.fn((data) => ({ id: 1, ...data }));
  const app = buatApp({ repo: { tambah }, jam: () => 1767225600000 });
  app(buatReq({ method: "POST", path: "/reservasi", data: { tamu: 0 } }));
  assert.equal(tambah.mock.callCount(), 0);
});

Spy menjawab pertanyaan yang tidak terlihat dari respons: apakah repositori ditulis, berapa kali, dan dengan data apa. Middleware diuji dengan cara serupa: berikan next tiruan yang mencatat request yang diterimanya, lalu periksa apakah next dipanggil dan dengan req seperti apa.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Tes di bawah menguji middleware wajibMasuk dengan next tiruan. Pemeriksaan mana yang membuktikan wajibMasuk menolak permintaan tanpa token tanpa menjalankan handler?

let dipanggil = 0;
const nextTiruan = (req) => {
  dipanggil++;
  return { status: 200, headers: {}, body: req.pengguna };
};
const res = wajibMasuk({ headers: {} }, nextTiruan);
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi