PHPStan
Unit PHP
Ekstensi ini menyediakan fitur-fitur berikut:
metode createMock()
, getMockForAbstractClass()
dan getMockFromWsdl()
mengembalikan tipe perpotongan (lihat penjelasan mendetail tentang tipe perpotongan) dari objek tiruan dan kelas yang diolok-olok sehingga kedua metode dari objek tiruan (seperti expects
) dan dari kelas yang diolok-olok tersedia pada objek tersebut.
getMock()
yang dipanggil pada MockBuilder
juga didukung.
Menafsirkan Foo|PHPUnit_Framework_MockObject_MockObject
di phpDoc sehingga menghasilkan tipe persimpangan dan bukan tipe gabungan.
Mendefinisikan panggilan metode penghentian awal untuk kelas PHPUnitFrameworkTestCase
untuk mencegah kesalahan variabel yang tidak ditentukan.
Menentukan jenis ekspresi yang diteruskan ke berbagai metode assert
seperti assertInstanceOf
, assertTrue
, assertInternalType
, dll.
Dikombinasikan dengan level 4 PHPStan, ini menunjukkan pernyataan yang selalu benar dan selalu salah seperti assertTrue(true)
dll.
Ini juga berisi aturan khusus kerangka kerja yang ketat (dapat diaktifkan secara terpisah):
Periksa apakah Anda tidak menggunakan assertSame()
dengan nilai true
seperti yang diharapkan. assertTrue()
harus digunakan sebagai gantinya.
Periksa apakah Anda tidak menggunakan assertSame()
dengan nilai false
seperti yang diharapkan. assertFalse()
sebaiknya digunakan sebagai gantinya.
Periksa apakah Anda tidak menggunakan assertSame()
dengan null
sebagai nilai yang diharapkan. assertNull()
sebaiknya digunakan sebagai gantinya.
Periksa apakah Anda tidak menggunakan assertSame()
dengan count($variable)
sebagai parameter kedua. assertCount($variable)
harus digunakan sebagai gantinya.
Jika Anda perlu mengonfigurasi tiruan bahkan setelah Anda menetapkannya ke properti atau mengembalikannya dari suatu metode, Anda harus menambahkan PHPUnit_Framework_MockObject_MockObject
ke phpDoc:
/** * @return Foo&PHPUnit_Framework_MockObject_MockObject */fungsi pribadi createFooMock() { kembalikan $ini->createMock(Foo::class); }fungsi publik testSomething() { $fooMock = $ini->createFooMock(); $fooMock->metode('doFoo')->akan($ini->returnValue('test')); $fooMock->doFoo(); }
Harap dicatat bahwa sintaks yang benar untuk tipe persimpangan adalah Foo&PHPUnit_Framework_MockObject_MockObject
. Foo|PHPUnit_Framework_MockObject_MockObject
juga didukung, namun hanya untuk alasan ekosistem dan warisan.
Jika mock telah sepenuhnya terkonfigurasi dan hanya metode dari kelas yang diolok-olok yang seharusnya dipanggil pada nilainya, tidak masalah jika hanya mengetikkan kelas yang diolok-olok:
/** @var Foo */private $foo; fungsi yang dilindungi setUp() { $fooMock = $ini->createMock(Foo::kelas); $fooMock->metode('doFoo')->akan($ini->returnValue('test')); $ini->foo = $fooMock; }fungsi publik testSomething() { $ini->foo->doFoo(); // $this->foo->method() dan Expects() tidak dapat dipanggil lagi}
Untuk menggunakan ekstensi ini, memerlukannya di Komposer:
composer require --dev phpstan/phpstan-phpunit
Jika Anda juga menginstal phpstan/extension-installer maka Anda sudah siap!
Jika Anda tidak ingin menggunakan phpstan/extension-installer
, sertakan extension.neon dalam konfigurasi PHPStan proyek Anda:
includes: - vendor/phpstan/phpstan-phpunit/extension.neon
Untuk melakukan pemeriksaan khusus kerangka kerja, sertakan juga file ini:
- vendor/phpstan/phpstan-phpunit/rules.neon