INTERN
composer require --dev proklung/bitrix-phpunit-testing-tools
Paket yang menggunakan paket ini sebagai dependensi harus memiliki bagian di composer.json (modul migrasi harus diinstal di tempat yang seharusnya):
"extra" : {
"installer-paths" : {
"vendor/sheerockoff/bitrix-ci/files/bitrix/modules/{$name}/" : [ " type:bitrix-module " ]
}
}
Kelas dasar untuk pengujian adalah BitrixableTestCase
. Meluncurkan Bitrix yang terlampir pada paket dan memungkinkan Anda menggunakan API-nya dalam pengujian.
Parameter akses database ditentukan dalam metode setupDatabaseData
kelas dasar BitrixableTestCase
.
Jika database tidak ada pada saat peluncuran, database akan dibuat.
Bawaan:
protected function setupDatabaseData () : void
{
putenv ( ' MYSQL_HOST=localhost ' );
putenv ( ' MYSQL_DATABASE=bitrix_ci ' );
putenv ( ' MYSQL_USER=root ' );
putenv ( ' MYSQL_PASSWORD= ' );
}
Dapat ditimpa di setiap tes tertentu.
Petunjuk untuk mereset database sebelum setiap pengujian dan memuat yang baru.
Reset database dan muat dump database kustom.
Jalur ke dump ditentukan dalam metode pengujian getDumpPath
:
protected function getDumpPath () : string
{
return $ _SERVER [ ' DOCUMENT_ROOT ' ] . ' /Tests/dump/dump.sql ' ;
}
Hanya efektif jika dikombinasikan dengan ResetDatabaseTrait
.
Saat menggunakan battle dumps, masalah dengan berakhirnya lisensi biasanya muncul. Dalam hal ini, Anda harus mengganti file include.php
secara manual di vendor/sheerockoff/bitrix-ci/files/bitrix/modules/main
.
Menggunakan migrasi modul sprint.option.
Jalur ke direktori dengan migrasi ditentukan dalam metode pengujian getPathSprintMigrations
:
protected function getPathSprintMigrations () : string
{
return __DIR__ . ' ../../../../../../Tests/sprint_migrations/ ' ;
}
Karena kekhasan penggunaan rakitan Bitrix CI, Anda harus menginstal modul dengan cerdik - langsung di dalam paket rakitan (di folder vendor/sheerockoff/bitrix-ci/files/bitrix/modules/sprint.option
) pada tahap komposer . Efek sampingnya adalah jika rakitan itu sendiri diperbarui, modul migrasi akan sia-sia.
Sejauh ini.
Secara berkala, database kedaluwarsa karena tanggal kedaluwarsanya (“... versi uji coba telah kedaluwarsa...”). Untuk memperbaikinya, Anda perlu menjalankan pengujian apa pun dengan sifat ResetDatabaseTrait
, yang membuat ulang database.
Instruksikan untuk menjalankan migrasi sebelum setiap pengujian.
Di bawah tenda terdapat versi paket yang disederhanakan, jadi migrasi dari paket tersebut juga cocok. Dengan satu pengecualian - migrasi tidak mewarisi kelas ArrilotBitrixMigrationsBaseMigrationsBitrixMigration
, tetapi dari ArrilotBitrixMigrationsForkBaseMigrationsBitrixMigration
.
Jalur ke direktori dengan migrasi ditentukan dalam metode pengujian getMigrationsDir
:
protected function getMigrationsDir () : string
{
return __DIR__ . ' /../migrations ' ;
}
Sifat tersebut dilengkapi dengan metode pembantu makeMigration
untuk membuat migrasi templat.
protected function makeMigration( string $ name , string $ template ) : void
Templat yang tersedia:
Nama | Keterangan | Alias |
---|---|---|
`standar` | Bersihkan templat bawaan | |
`tambahkan_iblock_type` | Menambahkan tipe infoblock | |
`tambahkan_iblock` | Menambahkan blok informasi | |
`tambahkan_iblock_element_property` | Menambahkan properti ke blok info | `tambahkan_iblock_prop`, `tambahkan_iblock_element_prop`, `tambahkan_elemen_prop`, `tambahkan_elemen_properti` |
`tambahkan_uf` | Menambahkan properti UF | |
`kueri` | Permintaan sewenang-wenang ke database melalui API d7 | |
`tambahkan_tabel` | Membuat tabel melalui d7 API | `buat_tabel` |
`hapus_tabel` | Menghapus tabel melalui API d7 | `drop_table` |
Ciri tambahan - CSVTrait
untuk mengimpor file CSV (format ekspor Bitrix) dalam migrasi.
Setelah diaktifkan, pengujian harus menerapkan metode berikut:
getIblockCode()
- kode infoblock;getImportDefinitionSections()
- definisi subbagian. Array dengan jumlah kolom dalam file CSV (IC_GROUP0, dll.);getImportDefinitionProperties()
- definisi properti. Array berbentuk [kode properti => nomor kolom dalam CSV];getCsvPath()
- jalur ke file CSV;Penting! - file CSV tidak boleh memiliki baris pertama dengan nama kolom.
Dari paket. Didesain ulang untuk kebutuhan pribadi.
Untuk membantu menguji kode komponen, gunakan kelas ProklBitrixTestingToolsInvokersComponentInvoker
Metode kelas:
__constructor($componentObject)
- inisialisasi objek peluncuran komponen;init()
- inisialisasi;setParams($params)
- menetapkan parameter untuk meluncurkan komponen yang diuji;setArParams($params)
- menyetel arParams untuk menjalankan komponen yang sedang diuji;setName(string $name)
- menetapkan nama komponen("test.component");setTemplate($template)
- menyetel komponen template("test.component");execute()
- meluncurkan komponen untuk dieksekusi (template tidak digunakan);getResultValue($name)
- mengembalikan parameter $arResult dengan kunci $name;getArResult()
- mengembalikan $arResult operasi komponen secara lengkap;getArResultCached()
- mengembalikan bagian yang di-cache (melalui $this->__component) dari $arResult setelah komponen dijalankan;getExecuteResult()
- mengembalikan hasil operasi komponen ketika operator return
digunakan dalam kode komponen.Contoh:
// ...
/**
* @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 , " Результат не верен " );
}
Anda dapat menguji result_modifier templat komponen menggunakan objek kelas ProklBitrixTestingToolsInvokersResultModifierInvoker
.
Metode:
__construct($componentName, $template)
- inisialisasi objek, parameternya sama dengan parameter metode CMain::IncludeComponent()
;setArResult($arResult)
- mengatur hasil secara artifisial untuk dikirim ke adaptor;setArParams($params)
- menyetel arParams untuk menjalankan komponen yang sedang diuji;execute()
- meluncurkan adaptor untuk dieksekusi;getArResult()
- mengembalikan $arResult
operasi adaptor secara penuh;getArResultCached()
- mengembalikan bagian yang di-cache (melalui $this->__component) dari $arResult setelah komponen dijalankan;getArResultValue($name)
- nilai hasil adaptor menggunakan kunci $name
;Contoh:
/**
* @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 , " Параметры не равны " );
}
Kelas ProklBitrixTestingToolsInvokersEventInvoker
mempermudah pengujian pemrosesan peristiwa.
Metode:
__construct($module, $eventName)
- inisialisasi objek pemicu peristiwa, $module - nama modul emisi peristiwa, $eventName - nama peristiwa;setExecuteParams($params)
- mengatur parameter peristiwa dalam bentuk array, yang akan diteruskan ke parameter peristiwa;execute()
- rilis acara;countOfHandlers()
- mendapatkan jumlah event handler;getEvent()
- mendapatkan objek acara;Contoh:
// ...
/**
* @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
dari kelas BitrixableTestCase
. Mengemulasi berada di URL. Mengekspos segala sesuatu yang berhubungan dengan URL di inti lama dan D7.Itu juga secara otomatis menggantikan segala sesuatu yang mungkin dari super-global seperti $_SERVER, $_POST, dll.
$ _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'