php-mock/php-mock-mockery

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

1.4.1 2023-06-13 07:47 UTC

This package is auto-updated.

Last update: 2024-08-23 13:44:31 UTC


README

.github/workflows/tests.yml

使用Mockery模拟PHP内置函数

此包将函数模拟库 PHP-Mock 与 Mockery 集成。

安装

使用 Composer

composer require --dev php-mock/php-mock-mockery

用法

PHPMockery::mock() 允许您构建一个可以配备 Mockery 预期的函数模拟。在您的测试之后,您需要通过调用 Mockery::close() 来禁用所有创建的函数模拟。

示例

namespace foo;

use phpmock\mockery\PHPMockery;

$mock = PHPMockery::mock(__NAMESPACE__, "time")->andReturn(3);
assert (3 == time());

\Mockery::close();

限制

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

  • 只有 无限定符 的函数调用在命名空间上下文中才能被模拟。例如,在命名空间 foo 中对 time() 的调用是可以模拟的,而对 \time() 的调用则不行。

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

许可和作者

此项目是免费的,遵循WTFPL。该项目由Markus Malkusch负责 [email protected]

捐赠

如果您喜欢这个项目,并且觉得慷慨,请在这里捐赠一些比特币:1335STSwu9hST4vcMRppEPgENMHD2rK