crysalead/kahlan

此包已被弃用且不再维护。作者建议使用 kahlan/kahlan 包。

PHP 测试框架,为自由、真理和正义而设计。

安装数: 60,554

依赖项: 29

建议者: 0

安全性: 0

星标: 1,095

关注者: 30

分支: 65


README

Kahlan

Build Status License

Latest Stable Version Total Downloads Code Coverage

Kahlan 是一个功能齐全的单元测试和BDD测试框架,类似于 RSpec/JSpec,它使用 describe-it 语法,并将测试在 PHP 中推进了一步。

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

视频

IRC

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

文档

查看完整的文档这里

要求

  • PHP 7.1+
  • 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 使用了语义化版本控制,并维护一个变更日志来帮助您轻松理解发生了什么。

通过 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)