Ujian unit PHP: Peranan suntikan pergantungan dalam ujian

PHPz
Lepaskan: 2024-06-03 18:40:00
asal
798 orang telah melayarinya

Dalam ujian unit, suntikan kebergantungan (DI) digunakan untuk memisahkan kebergantungan, dengan itu meningkatkan kebolehselenggaraan dan kebolehgunaan semula ujian. Dengan DI, anda boleh mengejek atau mengetepikan tingkah laku pergantungan untuk menguji TUC anda terhadap gabungan pergantungan khusus untuk memastikan ia berfungsi seperti yang diharapkan dalam keadaan yang berbeza. DI membenarkan TUC untuk diasingkan dan tingkah lakunya diuji secara bebas, dengan itu meningkatkan daya tahan ujian dan kebolehselenggaraan.

Ujian unit PHP: Peranan suntikan pergantungan dalam ujian

Pengujian Unit PHP: Peranan Suntikan Ketergantungan dalam Pengujian

Dalam ujian unit, suntikan kebergantungan (DI) ialah teknik berkuasa yang membantu anda mencipta ujian yang boleh diselenggara dan boleh digunakan semula. Dengan menyahganding kebergantungan daripada kelas dalam ujian (TUC), DI membolehkan anda dengan mudah mengejek atau menegur tingkah laku kebergantungan, memberikan kawalan yang lebih besar ke atas pelaksanaan ujian.

Peranan Suntikan Ketergantungan

Salah satu kelebihan utama DI ialah ia membolehkan TUC diasingkan supaya anda boleh menguji kelakuannya secara bebas. Dengan menggunakan DI, anda boleh mencipta senario ujian di mana kebergantungan tertentu diejek atau ditikam manakala kebergantungan lain kekal tidak berubah. Dengan cara ini, anda boleh menguji TUC terhadap gabungan kebergantungan tertentu untuk memastikan ia berfungsi seperti yang diharapkan dalam pelbagai keadaan.

Melaksanakan DI dalam PHP

Terdapat banyak bekas DI tersedia dalam PHP. Salah satu pilihan yang paling popular ialah Jerawat:

use Pimple\Container;

$container = new Container();
$container['dependency'] = function () {
    return new Dependency();
};
Salin selepas log masuk
Salin selepas log masuk

Contoh praktikal

Pertimbangkan kelas PHP berikut:

class MyClass
{
    private $dependency;

    public function __construct(Dependency $dependency)
    {
        $this->dependency = $dependency;
    }

    public function doSomething()
    {
        // 使用 $this->dependency
    }
}
Salin selepas log masuk

Untuk menguji unit MyClass menggunakan DI, anda boleh melakukan langkah berikut: MyClass 进行单元测试,你可以执行以下步骤:

  1. 创建 DI 容器并注册依赖项:
use Pimple\Container;

$container = new Container();
$container['dependency'] = function () {
    return new Dependency();
};
Salin selepas log masuk
Salin selepas log masuk
  1. 使用 DI 容器实例化 TUC:
$myClass = $container->make('MyClass');
Salin selepas log masuk
  1. 模拟或存根依赖项:
$mockDependency = $this->getMockBuilder(Dependency::class)
    ->disableOriginalConstructor()
    ->getMock();

$container['dependency'] = $mockDependency;
Salin selepas log masuk
  1. 运行测试:
$this->assertEquals('Expected result', $myClass->doSomething());
Salin selepas log masuk

通过使用 DI,你可以隔离 MyClass

  • Buat bekas DI dan daftarkan kebergantungan: 🎜
  • rrreee
    1. 🎜Gunakan bekas DI untuk mewujudkan TUC: 🎜
    2. rrreee
      1. 🎜Kebergantungan olok-olok atau stub: 🎜
      rrreee
      1. 🎜Jalankan ujian: 🎜 li>rrreee🎜Dengan menggunakan DI, anda boleh mengasingkan MyClass dan mengujinya terhadap gabungan kebergantungan tertentu. Pendekatan ini menjadikan ujian anda lebih berdaya tahan dan boleh diselenggara kerana ia membolehkan anda mengubah tingkah laku kebergantungan tanpa menjejaskan ujian lain. 🎜

    Atas ialah kandungan terperinci Ujian unit PHP: Peranan suntikan pergantungan dalam ujian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:php.cn
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!