Kahlan は、RSpec/JSpec に似たフル機能の Unit & BDD テスト フレームワークで、 describe-it
構文を使用し、PHP でのテストを一歩前進させます。
Kahlan を使用すると、必要な PECL 拡張機能を使用せずに、Ruby や JavaScript と同様にコードに直接スタブ パッチやモンキー パッチを適用できます。
Unified Diff でのウォーレン・シーモアのプレゼンテーション (2015)
フランス語での Grafikart プレゼンテーション (2016、Kahlan 2.X)
chat.freenode.net (サーバー) #kahlan (チャネル)
ここで完全なドキュメントを参照してください
PHP 7.2+
作曲家
phpdbg または Xdebug (コード カバレッジ分析にのみ必要)
RSpec/JSpec 構文
コード カバレッジ メトリクス (xdebug または phpdbg が必要)
便利なスタブ システム (嘲笑や予言はもう必要ありません)
クラスメソッドにスタブを直接設定します(つまり、動的モックが可能になります)。
コードにモンキーパッチを適用する機能 (つまり、コア関数/クラスをオンザフライで置き換えることが可能)
クラス/インスタンスで呼び出されたメソッドを確認する
組み込みレポーター (istanbul または lcov を介したターミナルまたは HTML レポート)
内蔵エクスポーター (カバーオール、コードクライメート、スクリュティナイザー、クローバー)
拡張可能でカスタマイズ可能なワークフロー
<?phpdescribe("例", function() { it("期待値を作る", function() { Expect(true)->toBe(true); }); it("呼び出されるメソッドを期待しています", function() { $user = new User(); Expect($user)->toReceive('save')->with(['validates' => false]); $ user->save(['validates' => false]); }); it("関数のスタブ", function() {allow('time')->toBeCalled()->andReturn(123); $user = new User(); Expect($user->save())-> toBe(true) Expect($user->created)->toBe(123); }); it("クラスのスタブ", function() {allow('PDO')->toReceive('prepare', 'fetchAll')->andReturn([['name' => 'bob']]); $user = 新しい User(); Expect($user->all())->toBe([['name' => 'bob']]); }); });
$composer require --dev kahlan/kahlan
注: Kahlan はセマンティック バージョニングを使用し、何が起こっているかを簡単に理解できるように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)