php-mock/php-mock-prophecy

使用 Prophecy 模拟内置 PHP 函数(例如 time())。此软件包依赖于 PHP 的命名空间回退策略。不需要额外的扩展。

资助软件包维护!
michalbundyra

0.1.2 2023-06-13 07:49 UTC

This package is auto-updated.

Last update: 2024-08-23 13:55:27 UTC


README

此软件包将功能模拟库 PHP-Mock 与 Prophecy 集成。

安装

使用 Composer

composer require --dev php-mock/php-mock-prophecy

用法

构建一个新的 PHPProphet,然后使用 PHPProphet::prophesize() 为给定命名空间创建函数预言

namespace foo;

use phpmock\prophecy\PHPProphet;

$prophet = new PHPProphet();

$prophecy = $prophet->prophesize(__NAMESPACE__);
$prophecy->time()->willReturn(123);
$prophecy->reveal();

assert(123 == time());
$prophet->checkPredictions();

限制

此库具有与底层 php-mock 相同的限制。

  • 只有命名空间上下文中的 非限定 函数调用可以被预言。例如,在命名空间 foo 中对 time() 的调用是预言可用的,而对 \time() 的调用则不是。

  • 模拟必须在测试类中对非限定函数的第一次调用之前定义。这在 Bug #68541 中有记录。在大多数情况下,您可以忽略此限制。但如果您遇到此问题,可以在第一次调用之前调用 PHPProphet::define()。这将定义一个无副作用的命名空间函数。

  • 此外,它还受到 Prophecy 的限制:Prophecy 不支持按引用传递。如果您需要在预言中使用按引用传递,请考虑使用另一个框架(例如 php-mock-phpunit)。

许可证和作者

此项目是免费的,受 WTFPL 协议保护。此项目的负责人是 Markus Malkusch markus@malkusch.de

捐赠

如果您喜欢这个项目并且愿意慷慨捐赠,请在此处捐赠一些比特币:1335STSwu9hST4vcMRppEPgENMHD2r1REK