Laravel middleware: Laksanakan ujian automatik dan pemeriksaan liputan kod
Pengenalan:
Pengujian automatik ialah bahagian penting dalam proses pembangunan perisian. Ia boleh membantu kami menemui masalah dalam kod tepat pada masanya dan meningkatkan kualiti perisian. Dalam rangka kerja Laravel, kami boleh melaksanakan ujian automatik dan semakan liputan kod melalui perisian tengah. Artikel ini akan memperkenalkan cara menggunakan perisian tengah Laravel untuk ujian automatik dan semakan liputan kod serta menyediakan contoh kod yang berkaitan.
1. Apakah perisian tengah Laravel?
Middleware ialah konsep teras dalam rangka kerja Laravel yang boleh melaksanakan fungsi di mana-mana antara permintaan yang memasuki aplikasi dan respons yang dikembalikan kepada klien. Middleware ialah mekanisme yang menapis permintaan dan respons, mengubah suai atau memprosesnya sebelum permintaan sampai ke laluan atau selepas respons dikembalikan kepada klien. Pelbagai fungsi boleh dilaksanakan menggunakan perisian tengah, seperti pengesahan penghalaan, mencegah pemalsuan permintaan merentas tapak, dsb. Dalam ujian automatik dan semakan liputan kod, kami boleh menggunakan perisian tengah untuk mengesan liputan kod dalam permintaan dan respons.
2. Ujian automatik
Menggunakan perisian tengah Laravel untuk ujian automatik boleh membantu kami mencari masalah dalam kod tepat pada masanya dan memastikan ketepatan kod. Di bawah ini kami akan menggunakan contoh untuk memperkenalkan cara menggunakan perisian tengah Laravel untuk ujian automatik.
php artisan make:middleware CodeCoverageMiddleware
Arahan ini akan menjana fail kelas middleware bernama CodeCoverageMiddleware
dalam direktori app/Http/Middleware
. app/Http/Middleware
目录下生成一个名为CodeCoverageMiddleware
的中间件类文件。
CodeCoverageMiddleware
中间件CodeCoverageMiddleware
类文件中,我们可以重写handle
方法来实现自动化测试:namespace AppHttpMiddleware; use IlluminateSupportFacadesApp; use IlluminateHttpRequest; class CodeCoverageMiddleware { public function handle(Request $request, Closure $next) { if (App::environment('testing')) { // 运行代码覆盖率检查 } return $next($request); } }
在上述代码中,我们通过判断应用程序是否处于testing
环境下来确定是否运行代码覆盖率检查。
app/Http/Kernel.php
文件中的$middleware
数组中:protected $middleware = [ // ... AppHttpMiddlewareCodeCoverageMiddleware::class, ];
通过以上步骤,我们已经成功创建并注册了一个用于自动化测试的中间件。现在,当应用程序处于testing
环境下时,每个请求都会经过这个中间件。
三、代码覆盖率检查
使用Laravel中间件进行代码覆盖率检查可以帮助我们了解哪些代码被测试覆盖到了,以及哪些代码没有被覆盖到。这有助于我们确定需要进行更多测试的代码区域,提高代码的可靠性。下面我们将以一个示例来介绍如何使用Laravel中间件进行代码覆盖率检查。
phpunit/php-code-coverage
包来实现代码覆盖率检查:composer require --dev phpunit/php-code-coverage
CodeCoverageMiddleware
中间件CodeCoverageMiddleware
中间件的handle
方法中实现代码覆盖率检查:namespace AppHttpMiddleware; use IlluminateSupportFacadesApp; use IlluminateHttpRequest; use SebastianBergmannCodeCoverageFilter; use SebastianBergmannCodeCoverageCodeCoverage; use SebastianBergmannCodeCoverageReportHTMLFacade as CoverageReporter; class CodeCoverageMiddleware { public function handle(Request $request, Closure $next) { if (App::environment('testing')) { $filter = new Filter(); $filter->addFileToWhitelist(base_path()); $coverage = new CodeCoverage(null, $filter); $coverage->start('laravel'); register_shutdown_function(function () use ($coverage) { $coverage->stop(); CoverageReporter::factory([ 'target' => storage_path('coverage'), ])->process($coverage); }); } return $next($request); } }
在上述代码中,我们通过使用phpunit/php-code-coverage
包提供的类来实现代码覆盖率检查。在每个请求到来时,我们通过start
方法开始代码覆盖率检查,并在应用程序结束时通过stop
方法结束检查。然后,我们使用CoverageReporter
来生成代码覆盖率报告。
http://your-app-url/storage/coverage/index.html
CodeCoverageMiddleware
middleware CodeCoverageMiddleware
yang dihasilkan, kita boleh mengatasi kaedah handle
Untuk melaksanakan ujian automatik:
rrreee
ujian
.
Selepas melengkapkan penyuntingan middleware, kita perlu mendaftarkannya ke $middlewareapp/Http/Kernel.php
/code>Dalam tatasusunan:
ujian
, setiap permintaan akan melalui perisian tengah ini. 🎜🎜3. Semakan liputan kod🎜Menggunakan perisian tengah Laravel untuk semakan liputan kod boleh membantu kami memahami kod yang dilindungi oleh ujian dan kod yang tidak dilindungi. Ini membantu kami mengenal pasti kawasan kod yang memerlukan lebih banyak ujian dan meningkatkan kebolehpercayaan kod. Di bawah ini kami akan menggunakan contoh untuk memperkenalkan cara menggunakan perisian tengah Laravel untuk semakan liputan kod. 🎜🎜🎜Pasang alat semakan liputan🎜Mula-mula, kita perlu memasang pakej phpunit/php-code-coverage
untuk melaksanakan semakan liputan kod: 🎜🎜rrreeehandle
bagi middleware CodeCoverageMiddleware
: 🎜🎜rrreee🎜Dalam kod di atas , kami melaksanakan semakan liputan kod dengan menggunakan kelas yang disediakan oleh pakej phpunit/php-code-coverage
. Apabila setiap permintaan datang, kami memulakan semakan liputan kod melalui kaedah start
dan menamatkan semakan melalui kaedah stop
apabila aplikasi tamat. Kami kemudian menggunakan CoverageReporter
untuk menjana laporan liputan kod. 🎜http://your-app-url/storage/coverage/ index. html
untuk melihat laporan liputan kod. 🎜🎜🎜Kesimpulan: 🎜Laravel middleware menyediakan kami cara yang sangat mudah untuk melaksanakan ujian automatik dan semakan liputan kod. Dengan mencipta kelas middleware dan mendaftarkannya dalam aplikasi, kami boleh menjalankan semakan liputan kod secara automatik dalam persekitaran ujian dan melihat laporan berkaitan. Ini membantu kami mencari masalah dalam kod dengan cepat dan memastikan kualiti kod. 🎜🎜Malah, perisian tengah Laravel bukan sahaja boleh digunakan untuk ujian automatik dan semakan liputan kod, tetapi juga boleh digunakan untuk melaksanakan banyak fungsi lain, seperti pengelogan, penapisan permintaan, dll. Adalah sangat penting bagi pembangun untuk mahir dalam penggunaan perisian tengah. 🎜🎜Saya harap artikel ini dapat membantu pembaca lebih memahami perisian tengah Laravel dan cara menggunakannya untuk melaksanakan ujian automatik dan semakan liputan kod. Setiap orang boleh menggunakan perisian tengah secara fleksibel mengikut keperluan dan keadaan sebenar mereka sendiri untuk meningkatkan kecekapan pembangunan perisian dan kualiti kod. 🎜Atas ialah kandungan terperinci Perisian tengah Laravel: laksanakan ujian automatik dan semakan liputan kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!