PHPStan
PHPUnit
ส่วนขยายนี้มีคุณสมบัติดังต่อไปนี้:
createMock()
, getMockForAbstractClass()
และ getMockFromWsdl()
วิธีการส่งคืนประเภทจุดตัด (ดูคำอธิบายโดยละเอียดของประเภทจุดตัด) ของวัตถุจำลองและคลาสที่จำลองเพื่อให้ทั้งสองวิธีจากวัตถุจำลอง (เช่น expects
) และจากคลาสที่จำลอง มีอยู่บนวัตถุ
getMock()
ที่เรียกใช้บน MockBuilder
ก็ได้รับการสนับสนุนเช่นกัน
ตีความ Foo|PHPUnit_Framework_MockObject_MockObject
ใน phpDoc เพื่อให้ผลลัพธ์เป็นประเภทจุดตัดแทนที่จะเป็นประเภทยูเนี่ยน
กำหนดการเรียกวิธีการยุติก่อนกำหนดสำหรับคลาส PHPUnitFrameworkTestCase
เพื่อป้องกันข้อผิดพลาดของตัวแปรที่ไม่ได้กำหนด
ระบุประเภทของนิพจน์ที่ส่งผ่านไปยังวิธี assert
ต่างๆ เช่น assertInstanceOf
, assertTrue
, assertInternalType
เป็นต้น
เมื่อรวมกับ PHPStan ระดับ 4 จะชี้ให้เห็นการยืนยันที่เป็นจริงเสมอและเท็จเสมอ เช่น assertTrue(true)
เป็นต้น
นอกจากนี้ยังมีกฎเฉพาะกรอบงานที่เข้มงวดนี้ (สามารถเปิดใช้งานแยกกันได้):
ตรวจสอบว่าคุณไม่ได้ใช้ assertSame()
ด้วยค่า true
ตามที่คาดไว้ ควรใช้ assertTrue()
แทน
ตรวจสอบว่าคุณไม่ได้ใช้ assertSame()
โดยมี false
ตามค่าที่คาดไว้ ควรใช้ assertFalse()
แทน
ตรวจสอบว่าคุณไม่ได้ใช้ assertSame()
โดยมี null
ตามค่าที่คาดไว้ ควรใช้ assertNull()
แทน
ตรวจสอบว่าคุณไม่ได้ใช้ assertSame()
พร้อมด้วย count($variable)
เป็นพารามิเตอร์ตัวที่สอง ควรใช้ assertCount($variable)
แทน
หากคุณต้องการกำหนดค่าการจำลองแม้ว่าคุณจะกำหนดให้กับคุณสมบัติหรือส่งคืนจากวิธีการแล้ว คุณควรเพิ่ม PHPUnit_Framework_MockObject_MockObject
ให้กับ phpDoc:
/** * @return Foo&PHPUnit_Framework_MockObject_MockObject */ฟังก์ชันส่วนตัว createFooMock() { return $this->createMock(Foo::class); } ฟังก์ชั่นสาธารณะ testSomething() { $fooMock = $this->createFooMock(); $fooMock->method('doFoo')->will($this->returnValue('test')); $fooMock->doFoo(); -
โปรดทราบว่าไวยากรณ์ที่ถูกต้องสำหรับประเภททางแยกคือ Foo&PHPUnit_Framework_MockObject_MockObject
Foo|PHPUnit_Framework_MockObject_MockObject
ก็ได้รับการสนับสนุนเช่นกัน แต่สำหรับระบบนิเวศและเหตุผลดั้งเดิมเท่านั้น
หากการเยาะเย้ยได้รับการกำหนดค่าอย่างสมบูรณ์และควรจะเรียกเฉพาะเมธอดของคลาสที่เยาะเย้ยเท่านั้นในค่า ก็สามารถพิมพ์คำใบ้เฉพาะคลาสที่เยาะเย้ยได้:
/** @var Foo */private $foo; ฟังก์ชั่นที่ได้รับการป้องกัน setUp() { $fooMock = $this->createMock(ฟู::คลาส); $fooMock->method('doFoo')->will($this->returnValue('test')); $this->foo = $fooMock; } ฟังก์ชั่นสาธารณะ testSomething() { $นี่->foo->doFoo(); // $this->foo->method() และ Expects() ไม่สามารถเรียกได้อีกต่อไป}
หากต้องการใช้ส่วนขยายนี้ กำหนดให้ต้องมีใน Composer:
composer require --dev phpstan/phpstan-phpunit
หากคุณติดตั้ง phpstan/extension-installer ด้วย คุณก็พร้อมแล้ว!
หากคุณไม่ต้องการใช้ phpstan/extension-installer
ให้รวม extension.neon ไว้ในการกำหนดค่า PHPStan ของโปรเจ็กต์ของคุณ:
includes: - vendor/phpstan/phpstan-phpunit/extension.neon
หากต้องการดำเนินการตรวจสอบเฉพาะเฟรมเวิร์ก ให้รวมไฟล์นี้ด้วย:
- vendor/phpstan/phpstan-phpunit/rules.neon