0Pricing
PHP Academy · Pelajaran

Membuat Mock Dependensi dengan PHPUnit

Buat objek mock untuk mengisolasi unit dan mengendalikan perilaku kolaborator.

Membuat Mock Dependensi dengan PHPUnit adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Mengapa Menggunakan Objek Tiruan?

Pemodelan tiruan menggantikan dependensi nyata (basis data, layanan surel, klien HTTP) dengan objek palsu yang dapat dikendalikan, sehingga pengujian menjadi cepat, terisolasi, dan deterministik.

createMock()

createMock(ClassName::class) membuat objek tiruan yang mengimplementasikan semua metode kelas tersebut dan mengembalikan null secara bawaan.

<?php
$mailer = $this->createMock(Mailer::class);
// All methods return null by default

Mengharapkan Pemanggilan Metode

Gunakan expects() dengan pencocok seperti once(), exactly(3), never(), dan any() untuk memverifikasi bahwa metode dipanggil sebanyak yang semestinya.

<?php
$mailer->expects($this->once())
       ->method("send")
       ->with("user@example.com", "Welcome!");

Menetapkan Nilai Kembalian

Gunakan willReturn() agar metode tiruan mengembalikan nilai tertentu.

<?php
$repo = $this->createMock(UserRepository::class);
$repo->method("find")
     ->willReturn(new User(id: 1, name: "Alice"));

willReturnMap()

Kembalikan nilai yang berbeda bergantung pada argumennya dengan menggunakan willReturnMap().

<?php
$cache->method("get")
      ->willReturnMap([
          ["key:1", "value-one"],
          ["key:2", "value-two"],
      ]);

willThrowException()

Buat objek tiruan melemparkan pengecualian untuk menguji jalur penanganan kesalahan.

<?php
$repo->method("find")
     ->willThrowException(new DatabaseException("Connection lost"));

Pencocok Argumen

Gunakan pencocok argumen dalam with() untuk asersi yang fleksibel: $this->anything(), $this->equalTo(), $this->isInstanceOf().

<?php
$logger->expects($this->once())
       ->method("log")
       ->with($this->stringContains("error"));

Tiruan Parsial (getMockBuilder)

Gunakan getMockBuilder() dengan onlyMethods() untuk menirukan metode tertentu, sementara implementasi nyata metode lainnya tetap digunakan.

<?php
$svc = $this->getMockBuilder(EmailService::class)
            ->onlyMethods(["sendRaw"])
            ->getMock();
$svc->method("sendRaw")->willReturn(true);

Pola Pengawas

Pengawas mencatat semua pemanggilan, sehingga Anda dapat membuat asersi terhadapnya setelah eksekusi—tiruan PHPUnit dapat berperan sebagai pengawas dengan menggunakan any() dan menangkap argumen.

Menyuntikkan Objek Tiruan

Teruskan objek tiruan ke kelas yang diuji melalui injeksi konstruktor—pola standar untuk kode yang mudah diuji dan tidak saling bergantung.

<?php
$service = new NotificationService($mailer, $logger);
$service->notify($user);

Tiruan Antarmuka dibandingkan dengan Kelas Konkret

Pemodelan antarmuka lebih disarankan—detail implementasi tidak merembes ke dalam pengujian, dan pengujian tetap valid meskipun implementasi nyata berubah.

Ringkasan

Gunakan createMock() untuk mengisolasi dependensi. Gunakan expects()->method()->with()->willReturn() untuk menetapkan ekspektasi dan perilaku pengganti. Suntikkan objek tiruan melalui konstruktor.

Pemeriksaan Singkat

Metode mana yang membuat objek tiruan mengembalikan nilai tertentu?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membuat Mock Dependensi dengan PHPUnit” gratis?

Ya — teks lengkap “Membuat Mock Dependensi dengan PHPUnit” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membuat Mock Dependensi dengan PHPUnit”?

Buat objek mock untuk mengisolasi unit dan mengendalikan perilaku kolaborator. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Membuat Mock Dependensi dengan PHPUnit” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Penyiapan PHPUnit dan Uji Pertama
  2. Assertion dan Method Uji
  3. Penyedia Data untuk Uji Berparameter
  4. Membuat Mock Dependensi dengan PHPUnit
← Kembali ke PHP Academy