داخلي
composer require --dev proklung/bitrix-phpunit-testing-tools
يجب أن تحتوي الحزمة التي تستخدم هذه الحزمة كتبعية على قسم في Composer.json (يجب تثبيت وحدة الترحيل حيث يجب أن تكون):
"extra" : {
"installer-paths" : {
"vendor/sheerockoff/bitrix-ci/files/bitrix/modules/{$name}/" : [ " type:bitrix-module " ]
}
}
الفئة الأساسية للاختبارات هي BitrixableTestCase
. يقوم بتشغيل Bitrix المرفق بالحزمة ويسمح لك باستخدام واجهة برمجة التطبيقات (API) الخاصة به في الاختبارات.
يتم تعريف معلمات الوصول إلى قاعدة البيانات في أسلوب setupDatabaseData
للفئة الأساسية BitrixableTestCase
.
إذا لم تكن قاعدة البيانات موجودة وقت الإطلاق، فسيتم إنشاؤها.
تقصير:
protected function setupDatabaseData () : void
{
putenv ( ' MYSQL_HOST=localhost ' );
putenv ( ' MYSQL_DATABASE=bitrix_ci ' );
putenv ( ' MYSQL_USER=root ' );
putenv ( ' MYSQL_PASSWORD= ' );
}
يمكن تجاوزها في كل اختبار محدد.
تعليمات لإعادة ضبط قاعدة البيانات قبل كل اختبار وتحميل واحدة جديدة.
إعادة تعيين قاعدة البيانات وتحميل تفريغ قاعدة بيانات مخصصة.
تم تحديد المسار إلى التفريغ في طريقة getDumpPath
للاختبار:
protected function getDumpPath () : string
{
return $ _SERVER [ ' DOCUMENT_ROOT ' ] . ' /Tests/dump/dump.sql ' ;
}
فعال فقط مع ResetDatabaseTrait
.
عند استخدام مقالب المعركة، عادة ما تنشأ مشاكل انتهاء الترخيص. في هذه الحالة، يجب عليك استبدال ملف include.php
يدويًا في vendor/sheerockoff/bitrix-ci/files/bitrix/modules/main
.
استخدام عمليات ترحيل الوحدة النمطية sprint.option.
تم تحديد المسار إلى الدليل مع عمليات الترحيل في طريقة getPathSprintMigrations
للاختبار:
protected function getPathSprintMigrations () : string
{
return __DIR__ . ' ../../../../../../Tests/sprint_migrations/ ' ;
}
نظرًا لخصوصيات استخدام مجموعة Bitrix CI، يجب عليك تثبيت الوحدة بمهارة - مباشرة داخل حزمة التجميع (في مجلد vendor/sheerockoff/bitrix-ci/files/bitrix/modules/sprint.option
) في مرحلة الملحن . أحد الآثار الجانبية هو أنه إذا تم تحديث التجميع نفسه، فسوف تنخفض وحدة الترحيل.
حتى الآن.
بشكل دوري، تنتهي صلاحية قاعدة البيانات بسبب تاريخ انتهاء صلاحيتها ("... انتهت صلاحية النسخة التجريبية..."). لإصلاح ذلك، تحتاج إلى إجراء أي اختبار باستخدام سمة ResetDatabaseTrait
، التي تعيد إنشاء قاعدة البيانات مرة أخرى.
تعليمات لتشغيل عمليات الترحيل قبل كل اختبار.
يوجد أسفل الغطاء نسخة مجردة من الحزمة، لذا فإن عمليات الترحيل منها مناسبة أيضًا. مع استثناء واحد - لا يرث الترحيل من فئة ArrilotBitrixMigrationsBaseMigrationsBitrixMigration
، ولكن من ArrilotBitrixMigrationsForkBaseMigrationsBitrixMigration
.
تم تحديد المسار إلى الدليل مع عمليات الترحيل في طريقة getMigrationsDir
للاختبار:
protected function getMigrationsDir () : string
{
return __DIR__ . ' /../migrations ' ;
}
تأتي هذه السمة مع طريقة مساعد makeMigration
لإنشاء عمليات ترحيل القالب.
protected function makeMigration( string $ name , string $ template ) : void
القوالب المتاحة:
اسم | وصف | الأسماء المستعارة |
---|---|---|
"الافتراضي". | تنظيف القالب الافتراضي | |
`add_iblock_type` | إضافة نوع infoblock | |
"add_iblock". | إضافة كتلة المعلومات | |
`add_iblock_element_property` | إضافة خاصية إلى كتلة المعلومات | `add_iblock_prop`، `add_iblock_element_prop`، `add_element_prop`، `add_element_property` |
`ad_uf` | إضافة خصائص UF | |
`الاستعلام` | طلب تعسفي إلى قاعدة البيانات عبر d7 API | |
"أضف_جدول". | إنشاء جدول عبر d7 API | `إنشاء_جدول` |
"حذف_الجدول". | حذف جدول عبر API d7 | `drop_table` |
سمة إضافية - CSVTrait
لاستيراد ملفات CSV (تنسيق تصدير Bitrix) في عمليات الترحيل.
بمجرد التمكين، يجب أن ينفذ الاختبار الطرق التالية:
getIblockCode()
- رمز infoblock؛getImportDefinitionSections()
- تعريف الأقسام الفرعية. مصفوفة تحتوي على عدد الأعمدة في ملف CSV (IC_GROUP0، وما إلى ذلك)؛getImportDefinitionProperties()
- تعريف الخصائص. صفيف النموذج [رمز الخاصية => رقم العمود في ملف CSV]؛getCsvPath()
- المسار إلى ملف CSV؛مهم! - يجب ألا يحتوي ملف CSV على السطر الأول مع أسماء الأعمدة.
من الحزمة. أعيد تصميمها لتلبية الاحتياجات الخاصة.
للمساعدة في اختبار التعليمات البرمجية للمكون، استخدم فئة ProklBitrixTestingToolsInvokersComponentInvoker
طرق الفصل:
__constructor($componentObject)
- تهيئة كائن تشغيل المكون؛init()
- التهيئة؛setParams($params)
- يضبط المعلمات لتشغيل المكون قيد الاختبار؛setArParams($params)
- يضبط arParams لتشغيل المكون قيد الاختبار؛setName(string $name)
- يحدد اسم المكون("test.component");setTemplate($template)
- يضبط قالب المكون("test.component");execute()
- تشغيل المكون للتنفيذ (لا يتم استخدام القالب)؛getResultValue($name)
- يُرجع المعلمة $arResult حسب المفتاح $name؛getArResult()
- يُرجع $arResult الكامل لعملية المكون؛getArResultCached()
- يُرجع الجزء المُخزن مؤقتًا (عبر $this->__component) من $arResult بعد تشغيل المكون؛getExecuteResult()
- يُرجع نتيجة تشغيل المكون عند استخدام عامل return
في رمز المكون.مثال:
// ...
/**
* @label component
* @test
*/
public function useComponentInvoker () {
/** @var CBitrixComponent $componentObject */
$ component = new Prokl BitrixTestingTools Invokers ComponentInvoker ( $ componentObject );
$ component -> init ();
$ component -> setParams ( array ( " id " => 10 ));
$ component -> execute ();
$ this -> getAssert ()-> equal ( $ component -> getResultValue ( " id " ), 10 , " Результат не верен " );
}
يمكنك اختبار معدل نتائج قالب المكون باستخدام كائن من فئة ProklBitrixTestingToolsInvokersResultModifierInvoker
.
طُرق:
__construct($componentName, $template)
- تهيئة الكائن، المعلمات هي نفس معلمات الأسلوب CMain::IncludeComponent()
;setArResult($arResult)
- تعيين النتيجة بشكل مصطنع لإرسالها إلى المحول؛setArParams($params)
- يضبط arParams لتشغيل المكون قيد الاختبار؛execute()
- قم بتشغيل المحول للتنفيذ؛getArResult()
- يُرجع $arResult
الكامل لعملية المحول؛getArResultCached()
- يُرجع الجزء المُخزن مؤقتًا (عبر $this->__component) من $arResult بعد تشغيل المكون؛getArResultValue($name)
- قيمة نتيجة المحول باستخدام مفتاح $name
؛مثال:
/**
* @label component
* @test
*/
public function modifierForSomeTemplate () {
$ rm = new Prokl BitrixTestingTools Invokers ResultModifierInvoker ( " project:test.with.class " , " list " );
$ rm -> setArResult ( array ( " id " => 10 ));
$ rm -> execute ();
$ this -> getAssert ()-> equal ( $ rm -> getArResultValue ( " id " ), 10 , " Параметры не равны " );
}
تعمل فئة ProklBitrixTestingToolsInvokersEventInvoker
على تسهيل اختبار معالجة الأحداث.
طُرق:
__construct($module, $eventName)
- تهيئة كائن مشغل الحدث، $module - اسم وحدة انبعاث الحدث، $eventName - اسم الحدث؛setExecuteParams($params)
- تعيين معلمات الحدث في شكل مصفوفة، والتي سيتم تمريرها إلى معلمات الحدث؛execute()
- إصدار الحدث؛countOfHandlers()
- الحصول على عدد معالجات الأحداث؛getEvent()
- الحصول على كائن الحدث؛مثال:
// ...
/**
* @test
*/
public function handlersOfEventExist () {
$ eventInvoker = new Prokl BitrixTestingTools Invokers EventInvoker ( " main " , " OnPageStart " );
$ eventInvoker -> setExecuteParams ( array (
" IBLOCK_ID " => 12
));
$ eventInvoker -> execute ();
$ this -> getAssert ()-> asTrue ( $ eventInvoker -> countOfHandlers () > 1 );
}
goTo
لفئة BitrixableTestCase
. يحاكي التواجد على عنوان URL. يعرض كل ما يتعلق بعنوان URL في النواة القديمة وD7.كما أنه يستبدل تلقائيًا كل ما هو ممكن من الشركات العالمية الكبرى مثل $_SERVER و$_POST وما إلى ذلك.
$ _GET [ ' test ' ] = ' OK ' ;
$ this -> goTo ( ' /test/ ' );
$ url = $ APPLICATION -> GetCurPage (); // $url = '/test/index.php'
$ request = Application:: getInstance ()-> getContext ()-> getRequest ();
$ uriString = $ request -> getRequestUri (); // $uriString = '/test/'
$ testGetParam = $ request -> getQuery ( ' test ' ); // $testGetParam = 'OK'