eloquent/phony-kahlan

此软件包已被废弃,不再维护。未建议替代软件包。

Kahlan 的 Phony

4.0.0 2020-12-30 03:30 UTC

This package is auto-updated.

Last update: 2023-08-08 04:12:19 UTC


README

不再维护

此软件包不再维护。有关更多信息,请参阅此声明

Kahlan 的 Phony

Current version image

安装

composer require --dev eloquent/phony-kahlan

另请参阅

什么是 Kahlan 的 Phony

Kahlan 的 Phony 是 Kahlan 测试框架的插件,它提供了与 Phony 模拟框架的一般集成,以及可选的自动注入测试依赖项。

换句话说,如果 Kahlan 测试(或测试套件)需要一个模拟对象,它可以在运行时定义为具有适当的 类型声明 的参数,并会自动接收该类型的模拟作为参数。

存根 支持 callable 类型,以及其他类型声明的 "空" 值也是 支持的

插件安装

只有在使用插件的 依赖注入 功能时才需要安装。该插件可以像这样安装在 Kahlan 配置文件中

<?php // kahlan-config.php

// disable monkey-patching for Phony classes
$this->commandLine()->set('exclude', ['Eloquent\Phony']);

// install the plugin once autoloading is available
Kahlan\Filter\Filters::apply($this, 'run', function (callable $chain) {
    Eloquent\Phony\Kahlan\install();

    return $chain();
});

依赖注入

一旦安装了插件,任何定义了参数的测试或测试套件在运行时都会提供匹配的参数

describe('Phony for Kahlan', function () {
    it('Auto-wires test dependencies', function (PDO $db) {
        expect($db)->toBeAnInstanceOf(PDO::class);
    });
});

注入模拟对象

Kahlan 的 Phony 支持自动注入 模拟对象。由于 Phony 不会修改被模拟对象的接口,因此需要使用 on() 来检索 模拟句柄 以执行 存根验证

use function Eloquent\Phony\Kahlan\on;

describe('Phony for Kahlan', function () {
    it('Supports stubbing', function (PDO $db) {
        on($db)->exec->with('DELETE FROM users')->returns(111);

        expect($db->exec('DELETE FROM users'))->toBe(111);
    });

    it('Supports verification', function (PDO $db) {
        $db->exec('DROP TABLE users');

        on($db)->exec->calledWith('DROP TABLE users');
    });
});

注入的存根

Phony for Kahlan 支持自动注入具有 callable 类型声明的 存根

describe('Phony for Kahlan', function () {
    it('Supports callable stubs', function (callable $stub) {
        $stub->with('a', 'b')->returns('c');
        $stub('a', 'b');

        $stub->calledWith('a', 'b')->firstCall()->returned('c');
    });
});

支持的类型

下表列出了支持的类型声明及其提供的值

参数类型 提供值
(无) null
bool false
int 0
float .0
string ''
array []
iterable []
object (object) []
stdClass (object) []
callable stub()
Closure function () {}
Generator (function () {return; yield;})()

当使用上表中未列出的 类型声明 时,提供的值将是一个指定类型的 模拟

出于必要,提供的值将不会被包裹在一个 模拟句柄 中。为了获取句柄,只需使用 on()

use function Eloquent\Phony\Kahlan\on;

it('Example mock handle retrieval', function (ClassA $mock) {
    $handle = on($mock);
});

许可证

有关完整的版权和许可证信息,请查看 LICENSE 文件