Amalan terbaik ujian unit corak reka bentuk PHP: Asingkan kebergantungan: Gunakan suntikan kebergantungan atau objek olok-olok untuk mengelakkan gandingan dengan komponen luaran. Uji keadaan sempadan: Pertimbangkan pengecualian, pengendalian ralat dan kes penggunaan tepi untuk memastikan corak reka bentuk berfungsi dengan betul dalam setiap situasi. Merangkumi berbilang senario: Uji variasi dan pelaksanaan yang berbeza untuk merangkumi semua kemungkinan tingkah laku. Ikut prinsip SOLID: Gunakan prinsip seperti tanggungjawab tunggal dan gandingan longgar untuk menulis kod yang boleh diuji dan boleh diselenggara.
Amalan Terbaik Ujian Unit Corak Reka Bentuk PHP
Apabila menulis ujian unit, amalan baik adalah penting untuk memastikan kebolehpercayaan dan kebolehselenggaraan kod anda. Ujian unit amat penting untuk corak reka bentuk yang kompleks dalam PHP. Artikel ini akan memperkenalkan amalan terbaik untuk ujian unit corak reka bentuk PHP dan menggambarkannya melalui kes praktikal.
Asingkan kebergantungan
Sebaik-baiknya, ujian unit perlu dilakukan terhadap satu kelas atau kaedah tanpa kebergantungan pada komponen lain. Untuk corak reka bentuk, ini boleh menjadi tugas yang sukar kerana mereka sering bergantung pada interaksi antara berbilang kelas dan antara muka.
Gunakan rangka kerja suntikan kebergantungan atau objek olok-olok untuk mengasingkan kebergantungan. Contohnya, gunakan [PHPUnit_MockObject](https://phpunit.readthedocs.io/en/latest/fixtures.html#creating-mocks) untuk mencipta objek olok-olok sebagai ganti kebergantungan luaran:
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\MockObject\MockObject; class MyClassTest extends TestCase { /** @var MockObject */ private $mockDependency; protected function setUp(): void { $this->mockDependency = $this->createMock(IDependency::class); } }
Menguji syarat sempadan
Corak Reka Bentuk selalunya mengendalikan tingkah laku yang kompleks dan pengurusan keadaan. Ujian unit harus mempertimbangkan semua keadaan sempadan yang mungkin, termasuk pengecualian, pengendalian ralat dan kes tepi.
Sebagai contoh, semasa menguji kaedah attach
corak Pemerhati, anda hendaklah memastikan bahawa hanya pelanggan yang sah dilampirkan. Uji juga tingkah laku apabila pelanggan cuba melampirkan pada topik yang tidak sah: attach
方法时,应确保仅附加有效的订阅者。还可以测试当订阅者尝试附加到无效主题时的行为:
public function testAttachInvalidSubject() { $observer = new MyObserver(); $mode = 'invalid_mode'; $this->expectException(InvalidArgumentException::class); $observer->attach(new InvalidSubject(), $mode); }
覆盖多种场景
设计模式通常具有多种变体和实现。单元测试应涵盖所有这些不同的场景。
例如,测试策略模式的 execute
public function testExecuteDifferentStrategies() { $context = new Context(); $strategy1 = new Strategy1(); $strategy2 = new Strategy2(); $this->assertEquals('Strategy1 result', $context->execute($strategy1)); $this->assertEquals('Strategy2 result', $context->execute($strategy2)); }
Meliputi berbilang senario
Corak reka bentuk selalunya mempunyai pelbagai variasi dan pelaksanaan. Ujian unit harus meliputi semua senario yang berbeza ini. Sebagai contoh, apabila menguji kaedahexecute
corak strategi, gelagat kelas strategi yang berbeza harus dipertimbangkan. Anda juga boleh menguji perkara yang berlaku apabila anda lulus kelas dasar yang berbeza kepada kaedah pelaksanaan: class SingletonTest extends TestCase { public function testSingletonIsUnique() { $instance1 = Singleton::getInstance(); $instance2 = Singleton::getInstance(); $this->assertSame($instance1, $instance2); } public function testSingletonLazilyInitialized() { $this->assertNull(Singleton::getInstance()); Singleton::getInstance()->setValue('test'); $this->assertEquals('test', Singleton::getInstance()->getValue()); } }
Ikuti prinsip SOLID
Prinsip SOLID ialah lima prinsip pengaturcaraan berorientasikan objek yang boleh membantu menulis kod yang boleh diuji dan boleh diselenggara. Ini amat penting untuk ujian unit corak reka bentuk.Sebagai contoh, ikuti prinsip tanggungjawab tunggal untuk memastikan setiap kaedah ujian hanya menguji satu fungsi tertentu. Selain itu, patuhi prinsip gandingan yang longgar untuk memastikan kebergantungan antara ujian dan kod pengeluaran dikekalkan pada tahap minimum.
Kes praktikal
🎜Mod kes tunggal🎜🎜class ObserverTest extends TestCase { public function testObserverIsNotified() { $subject = new Subject(); $observer = new Observer(); $subject->attach($observer); $subject->setState('new state'); $this->assertEquals('new state', $observer->getState()); } public function testObserverIsDetached() { $subject = new Subject(); $observer = new Observer(); $subject->attach($observer); $subject->detach($observer); $subject->setState('new state'); $this->assertNotEquals('new state', $observer->getState()); } }🎜🎜Mod pemerhati🎜🎜rrreee
Atas ialah kandungan terperinci Amalan terbaik ujian unit corak reka bentuk PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa
