Kahlan เป็นเฟรมเวิร์กการทดสอบ Unit & BDD ที่มีคุณสมบัติครบถ้วน a la RSpec/JSpec ซึ่งใช้ไวยากรณ์ describe-it
และย้ายการทดสอบใน PHP ไปข้างหน้าหนึ่งก้าว
Kahlan ให้คุณ stub หรือ Monkey patch โค้ดของคุณได้โดยตรงเหมือนกับใน Ruby หรือ JavaScript โดยไม่ต้องใช้ส่วนขยาย PECL ใดๆ
การนำเสนอของ Warren Seymour ที่ Unified Diff (2015)
การนำเสนอ Grafikart เป็นภาษาฝรั่งเศส (2016, Kahlan 2.X)
chat.freenode.net (เซิร์ฟเวอร์) #kahlan (ช่อง)
ดูเอกสารฉบับเต็มได้ที่นี่
PHP7.2+
ผู้แต่ง
phpdbg หรือ Xdebug (จำเป็นสำหรับการวิเคราะห์การครอบคลุมโค้ดเท่านั้น)
ไวยากรณ์ RSpec/JSpec
ตัวชี้วัดการครอบคลุมโค้ด (ต้องใช้ xdebug หรือ phpdbg)
ระบบขัดข้องที่มีประโยชน์ (ไม่จำเป็นต้องเยาะเย้ยหรือคำทำนายอีกต่อไป)
ตั้งค่า stubs ในวิธีการเรียนของคุณโดยตรง (เช่น อนุญาตการเยาะเย้ยแบบไดนามิก)
ความสามารถในการแก้ไขโค้ดของ Monkey Patch (เช่น อนุญาตให้เปลี่ยนฟังก์ชันหลัก/คลาสได้ทันที)
ตรวจสอบวิธีการที่ถูกเรียกในคลาส/อินสแตนซ์ของคุณ
Built-in Reporters (การรายงานเทอร์มินัลหรือ HTML ผ่านอิสตันบูลหรือ lcov)
ผู้ส่งออกในตัว (Coveralls, Code Climate, Scrutinizer, Clover)
ขั้นตอนการทำงานที่ขยายได้และปรับแต่งได้
<?phpdescribe("Example", function() { it("ทำให้คาดหวัง", function() { คาดหวัง(true)->toBe(true); - it("คาดว่าวิธีการจะถูกเรียก", function() { $user = new User(); คาดหวัง($user)->toReceive('save')->with(['validates' => false]); $ ผู้ใช้ -> บันทึก (['ตรวจสอบ' => false]); - it("stubs a function", function() { อนุญาต('เวลา')->toBeCalled()->andReturn(123); $user = ผู้ใช้ใหม่(); คาดหวัง($user->save())-> toBe(true) คาดหวัง($user->created)->toBe(123); - it("stubs a class", function() { อนุญาต('PDO')->toReceive('prepare', 'fetchAll')->andReturn([['name' => 'bob']]); $user = ผู้ใช้ใหม่(); คาดหวัง($user->ทั้งหมด())->toBe([['name' => 'bob']]); - -
$ ผู้แต่ง need --dev kahlan/kahlan
หมายเหตุ: Kahlan ใช้ Semantic Versioning และรักษา CHANGELOG
เพื่อช่วยให้คุณเข้าใจสิ่งที่เกิดขึ้นได้อย่างง่ายดาย
git clone git://github.com/kahlan/kahlan.git cd kahlan composer install bin/kahlan # to run specs or, bin/kahlan --coverage=4 # to run specs with coverage info for namespaces, classes & methods (require xdebug)