Menyediakan kasus uji server HTTP untuk PHPUnit. Server ini didukung oleh server bawaan PHP untuk pengujian panggilan terkait jaringan.
Pustaka ini memerlukan PHP 7.3 atau lebih baru, termasuk PHP 8.0, 8,1, dan 8.2. Ini akan berjalan dengan PHPUnit versi 8 dan 9.
composer require giberti/phpunit-local-server
GibertiPHPUnitLocalServerLocalServerTestCase
seolah-olah Anda sedang memperluas PHPUnitFrameworkTestCase
php
yang berbeda dengan mengganti properti statis $phpBinary
di kelas. Panggil metode pembantu createServerWithDocroot()
atau createServerWithRouter()
lalu jalankan pengujian Anda.
use Giberti PHPUnitLocalServer LocalServerTestCase ;
class Test extends LocalServerTestCase
{
public function testFoo () {
static :: createServerWithDocroot ( ' ./tests/localhost ' );
$ url = $ this -> getLocalServerUrl () . ' /foo ' ;
$ content = file_get_contents ( $ url );
$ this -> assertEquals ( ' ... ' , $ content , ' Content mismatch ' );
}
}
Untuk mengoptimalkan kinerja pengujian Anda, sebaiknya gunakan kembali server bila memungkinkan. Untuk membuatnya lebih mudah, cukup jalankan server di awal kelas dengan mendefinisikan metode setupBeforeClass()
dengan konfigurasi yang Anda inginkan.
use Giberti PHPUnitLocalServer LocalServerTestCase ;
class Test extends LocalServerTestCase
{
public static function setupBeforeClass () {
static :: createServerWithDocroot ( ' ./tests/localhost ' );
}
public function testFoo () {
$ url = $ this -> getLocalServer () . ' /foo ' ;
$ content = file_get_contents ( $ url );
$ this -> assertEquals ( ' ... ' , $ content , ' Content mismatch ' );
}
public function testBar () {
$ url = $ this -> getLocalServer () . ' /bar ' ;
$ content = file_get_contents ( $ url );
$ this -> assertEquals ( ' ... ' , $ content , ' Content mismatch ' );
}
}
Dimungkinkan untuk menjalankan server dengan runtime PHP yang berbeda dari versi yang menjalankan rangkaian pengujian Anda. Ini dapat membantu dalam menguji kode Anda pada beberapa versi PHP. Pada contoh di bawah, server akan memulai dengan PHP 7.3 dan 8.1 yang dapat dieksekusi di /usr/local/bin/
pada sistem pengujian host. Jalanmu mungkin berbeda.
use Giberti PHPUnitLocalServer LocalServerTestCase ;
class Test73 extends LocalServerTestCase
{
static $ phpBinary = ' /usr/local/bin/php73 ' ;
public function testFoo () {
static :: createServerWithDocroot ( ' ./tests/localhost ' );
$ url = $ this -> getLocalServer () . ' /foo ' ;
$ content = file_get_contents ( $ url );
$ this -> assertEquals ( ' ... ' , $ content , ' Content mismatch ' );
}
}
class Test81 extends LocalServerTestCase
{
static $ phpBinary = ' /usr/local/bin/php81 ' ;
public function testFoo () {
static :: createServerWithDocroot ( ' ./tests/localhost ' );
$ url = $ this -> getLocalServer () . ' /foo ' ;
$ content = file_get_contents ( $ url );
$ this -> assertEquals ( ' ... ' , $ content , ' Content mismatch ' );
}
}
Metode berikut disediakan untuk berinteraksi dengan server lokal.
Membuat server lokal menggunakan root dokumen.
static :: createServerWithDocroot ( ' ./path/to/site/files ' );
Membuat server lokal menggunakan file router. Jika Anda menggunakan kerangka kerja, kemungkinan besar ini adalah file index.php
di rute dokumen Anda.
static :: createServerWithRouter ( ' ./path/to/router.php ' );
Menghapus server lokal. Berguna untuk mengatur ulang status sesi. Ini secara otomatis dipanggil dalam metode siklus hidup tearDownAfterClass()
.
static :: destroyServer ();
Port untuk server biasanya 8000
, namun ditetapkan secara dinamis jika terjadi konflik. Cara teraman untuk mengakses host adalah dengan memanggil metode getServerUrl()
dan menggunakannya sebagai root untuk konstruksi Url apa pun.
$ schemeHost = $ this -> getServerUrl ();
$ fullUrl = $ schemeHost . " /path/to/file/to/access " ;
echo $ fullUrl ; // http://localhost:8000/path/to/file/to/access