kahlan/kahlan

PHP 测试框架,旨在自由、真理与正义。


README

Kahlan

Build Status License

Latest Stable Version Total Downloads Code Coverage

Kahlan 是一个功能齐全的单元测试与行为驱动测试框架,类似于 RSpec/JSpec,使用 describe-it 语法,将 PHP 测试推进了一步。

Kahlan 允许您像 Ruby 或 JavaScript 一样直接模拟或猴子补丁您的代码,无需任何 PECL 扩展。

视频

IRC

chat.freenode.net(服务器) #kahlan(频道)

文档

请在此处查看完整的文档:完整文档

要求

  • PHP 7.2+
  • Composer
  • phpdbgXdebug(仅适用于代码覆盖率分析)

主要功能

  • RSpec/JSpec 语法
  • 代码覆盖率度量(需要 xdebugphpdbg
  • 方便的模拟系统(不再需要 mockeryprophecy
  • 直接在类方法上设置模拟(即允许动态模拟)
  • 允许猴子补丁您的代码(即允许动态替换核心函数/类)
  • 检查类/实例上的调用方法
  • 内置报告器(终端或通过 istanbullcov 的 HTML 报告)
  • 内置导出器(Coveralls、Code Climate、Scrutinizer、Clover)
  • 可扩展、可自定义的工作流程

语法

<?php

describe("Example", function() {

    it("makes an expectation", function() {

         expect(true)->toBe(true);

    });

    it("expects methods to be called", function() {

        $user = new User();
        expect($user)->toReceive('save')->with(['validates' => false]);
        $user->save(['validates' => false]);

    });

    it("stubs a function", function() {

        allow('time')->toBeCalled()->andReturn(123);
        $user = new User();
        expect($user->save())->toBe(true)
        expect($user->created)->toBe(123);

    });

    it("stubs a class", function() {

        allow('PDO')->toReceive('prepare', 'fetchAll')->andReturn([['name' => 'bob']]);
        $user = new User();
        expect($user->all())->toBe([['name' => 'bob']]);

    });

});

屏幕截图

默认报告示例

dot_reporter

详细报告示例

verbose_reporter

特定范围代码覆盖率示例

code_coverage

安装

通过 Composer

$ composer require --dev kahlan/kahlan

注意:Kahlan 使用 语义版本控制 并维护一个 CHANGELOG 文件,以帮助您轻松了解发生了什么。

通过 Git 克隆

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)