برای تستهای کامل PHP 8.2+، Composer، MySQL/MariaDB و افزونه pdo_mysql لازم است. تستهای integration به یک دیتابیس جداگانه نیاز دارند.
ابتدا وابستگیها را نصب کنید:
composer installبرای ساخت دیتابیس تست، migration و بررسی نصب تازه:
composer run test:prepareسپس تستها را اجرا کنید:
composer testنام پیشفرض دیتابیس yii2_kamancms_test است. در صورت نیاز این Environment Variableها را تنظیم کنید: TEST_DB_HOST، TEST_DB_PORT، TEST_DB_NAME، TEST_DB_USER و TEST_DB_PASSWORD.
tests/Support/DatabaseTestCase.php قبل از هر تست transaction باز میکند و بعد از تست rollback میکند. بنابراین تستها نباید به ترتیب اجرای تست دیگری وابسته باشند.
composer lint
composer style
composer analyse
composer security:auditlint: بررسی syntax فایلهای PHPstyle: اجرای PHP_CodeSniffer طبقphpcs.xmlanalyse: اجرای PHPStan طبقphpstan.neonsecurity:audit: بررسی advisoryهای Composer
npm install
npm run build
npm run check:cssبرای توسعه پیوسته CSS:
npm run devخروجی CSS تولیدی را دستی ویرایش نکنید؛ منبع تغییر frontend/web/css/src/app.css یا frontend/web/css/design-system.css است.
فرمان اصلی پروژه برای کنترل کامل:
composer ci
npm audit --audit-level=moderate
npm run buildتست نصب کامل، دیتابیس خالی و migrationها را نیز بررسی میکند:
composer test:installبرای هر Feature علاوه بر تست خودکار، این موارد را بررسی کنید:
- کاربر مهمان و کاربر بدون permission مناسب
- درخواست با method نادرست و CSRF نامعتبر
- داده خالی، طول بیش از حد و ورودی مخرب
- خطای validation و خطای دیتابیس
- موفقیت و redirect صحیح
- RTL، LTR، موبایل و keyboard navigation برای UI
- log، audit، notification، cache و فایلهای تولیدشده در صورت مرتبطبودن
- ابتدا
YII_ENVوYII_DEBUGرا فقط در محیط توسعه بررسی کنید. - لاگهای runtime را در
frontend/runtime/logsوconsole/runtime/logsبررسی کنید. - route و پارامترهای Request را در Controller بررسی کنید.
- validation errors مدل را قبل از redirect یا پیام موفقیت log/نمایش دهید.
- query و migration را با دیتابیس تست جداگانه بازتولید کنید.
- برای خطای frontend، Console مرورگر، Network و خروجی
npm run buildرا بررسی کنید. - برای رفتار permission، نقش، permission و route مورد استفاده را در RBAC و
frontend/modules/admin/Module.phpدنبال کنید.
Debug Toolbar و Gii فقط در محیط توسعه فعال باشند و نباید در Production در دسترس عمومی قرار بگیرند.