แพ็คเกจนี้ช่วยให้คุณสร้างการทดสอบ PHPUnit จากคำอธิบายประกอบ ซึ่งคุณสามารถเขียนลงในเอกสารวิธีการของคุณได้
วิธีที่แนะนำในการติดตั้งส่วนขยายนี้คือผ่านผู้แต่ง
ไม่ว่าจะวิ่ง
composer require hyperia/codecept-unittest-generator: " ^1.0 "
หรือเพิ่ม
"hyperia/codecept-unittest-generator": "^1.0"
ไปยังส่วนที่ต้องการของ composer.json ของคุณ
เปิดใช้งานส่วนขยาย UnitGenerator
ในไฟล์กำหนดค่าฐาน /codeception.yml
:
extensions :
enabled :
- CodeceptionExtensionRunFailed
commands :
- CodeceptionCommandUnitGenerator
unitgenerator :
config :
# erase old target files with new one
overwrite : true
# if you want to generate tests for Interface too
interface : false
# automaticaly generate tests for getter / setter method
auto : true
# ignore errors that can be ignored
ignore : true
# regex (/.*config.php/ for example) that files must not match to have a tests generation
exclude : ' /.*Trait.*/ '
# regex (/.*.php/ for example) that files should match to have a tests generation
include : ' /.*.php/ '
dirs :
# source directory => target directory
- common/models : tests/unit/unitgen/common/models/
- console/models : tests/unit/unitgen/console/models/
./vendor/bin/codecept generate:unit
/**
* @PHPUnitGen<phpunit_assertion_method>(<expectation>:{<parameters...>})
*/
คำอธิบายประกอบนี้ใช้พารามิเตอร์บางตัว:
phpunit_assertion_method : มันเป็นวิธีการยืนยัน PHPUnit ที่คุณต้องการใช้ (เช่น assertEquals , assertInstanceOf , assertTrue ... )
ความคาดหวัง : วิธีการส่งคืนค่าที่คาดหวัง บางวิธีของ PHPUnit ไม่จำเป็นต้องใช้ (เช่น assertTrue ) ดังนั้นในกรณีเหล่านั้น อาจเป็นโมฆะได้
พารามิเตอร์ : พารามิเตอร์วิธีการ
ดูตัวอย่างนี้ เราต้องการสร้างการทดสอบง่ายๆ สำหรับวิธีนี้โดยอัตโนมัติ:
<?php
// The class to test content
/** @PHPUnitGenAssertEquals('expected string':{1, 2, 'a string'}) */
/** @PHPUnitGenAssertTrue(:{4, 5, 'another'}) */
/** @PHPUnitGenAssertEquals(null) */
/** @PHPUnitGenAssertNull() */
public function method ( int $ arg1 = 0 , int $ arg2 = 0 , string $ arg3 = ' default ' ) {}
คำอธิบายประกอบเหล่านั้นจะสร้างการทดสอบ PHPUnit พื้นฐาน:
<?php
// The generated test for "method" in tests class
$ this -> assertEquals ( ' expectation string ' , $ this -> method ( 1 , 2 , ' a string ' ));
$ this -> assertTrue ( $ this -> method ( 4 , 5 , ' another ' ));
$ this -> AssertEquals ( null , $ this -> method ());
$ this -> assertNull ( $ this -> method ());
<?php
// The class to test content
/** @PHPUnitGenGet() */
/** @PHPUnitGenSet() */
คำอธิบายประกอบทั้งสองนี้จะช่วยให้คุณสามารถสร้างการทดสอบอัตโนมัติสำหรับ getter / setter แบบง่าย getter / setter ของคุณจะต้องตั้งชื่อดังนี้:
get<MyProperty>() {}
set<MyProperty>() {}
PHPUnit Generator มีตัวเลือก "อัตโนมัติ": หากคุณเปิดใช้งาน มันจะค้นหาคุณสมบัติเมื่อพบวิธีที่เริ่มต้นด้วย "get" หรือ "set" และหากมีคุณสมบัติอยู่ มันจะสร้างการทดสอบ
หากวิธีทดสอบเป็นแบบส่วนตัวหรือมีการป้องกัน PHPUnit Generator จะเข้าถึงวิธีดังกล่าวด้วย PHP ReflectionClass
UnitGenerator ต้องการคอมโพเนนต์ต่อไปนี้เพื่อทำงาน: