Kahlan ist ein voll funktionsfähiges Unit- und BDD-Testframework à la RSpec/JSpec, das eine describe-it
Syntax verwendet und das Testen in PHP einen Schritt nach vorne bringt.
Mit Kahlan können Sie Ihren Code direkt wie in Ruby oder JavaScript mit Stubs oder Monkey-Patches versehen, ohne dass PECL-Erweiterungen erforderlich sind.
Warren Seymour-Präsentation bei Unified Diff (2015)
Grafikart-Präsentation auf Französisch (2016, Kahlan 2.X)
chat.freenode.net (Server) #kahlan (Kanal)
Die vollständige Dokumentation finden Sie hier
PHP 7.2+
Komponist
phpdbg oder Xdebug (nur für Code-Coverage-Analyse erforderlich)
RSpec/JSpec-Syntax
Kennzahlen zur Codeabdeckung (xdebug oder phpdbg erforderlich)
Praktisches Stubbing-System (Spott oder Prophezeiung sind nicht mehr nötig)
Setzen Sie Stubs direkt auf Ihre Klassenmethoden (d. h. ermöglichen Sie dynamisches Mocking)
Möglichkeit zum Monkey-Patchen Ihres Codes (d. h. ermöglicht das Ersetzen von Kernfunktionen/-klassen im Handumdrehen)
Überprüfen Sie die aufgerufenen Methoden Ihrer Klassen/Instanzen
Integrierte Reporter (Terminal- oder HTML-Berichte über Istanbul oder LCOV)
Integrierte Exporteure (Overalls, Code Climate, Scrutinizer, Clover)
Erweiterbarer, anpassbarer Workflow
<?phpdescribe("Example", function() { it("macht eine Erwartung", function() {expect(true)->toBe(true); }); it("erwartet, dass Methoden aufgerufen werden", function() { $user = new User(); Expect($user)->toReceive('save')->with(['validates' => false]); $ user->save(['validates' => false]); }); it("stubbt eine Funktion", function() {allow('time')->toBeCalled()->andReturn(123); $user = new User(); Expect($user->save())-> toBe(true) Expect($user->created)->toBe(123); }); it("stubbt eine Klasse", function() {allow('PDO')->toReceive('prepare', 'fetchAll')->andReturn([['name' => 'bob']]); $user = new User(); Expect($user->all())->toBe([['name' => 'bob']]); }); });
$ Composer erfordert --dev kahlan/kahlan
Hinweis: Kahlan verwendet die semantische Versionierung und verwaltet ein CHANGELOG
, damit Sie leichter verstehen, was passiert.
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)