akondas/exspecto

用于同步异步操作(忙等待)的PHP DSL

1.1.0 2024-01-22 12:50 UTC

This package is auto-updated.

Last update: 2024-09-23 10:30:08 UTC


README

Minimum PHP Version

用于同步异步操作(忙等待)的PHP DSL。

一个简单且有用的库,特别推荐用于测试异步系统。Exspecto 允许你以简洁且易于阅读的方式表达对异步系统的期望。示例

await()->atMost(1)->until(function() {
    return customerStatusIsUpdated();
});

你可以使用 pollInterval 来设置条件应该检查的频率(默认值为100毫秒)

await()->atMost(3)->pollInterval(200)->until(function() {
    return customerStatusIsUpdated();
});

如果返回的方法(闭包)可能抛出异常,你也可以等待给定的值

$value = await()->atMost(3)->pollInterval(200)->on(fn() => getValue());

exspecto - 来自拉丁语:等待期待

安装

composer require akondas/exspecto

路线图

  • 例如: untilAsserted('UserRepository::size', equaltTo(3))
  • 支持不同的轮询间隔策略(固定、斐波那契、迭代)
  • ignoreExceptions 发生异常时不停止(ignoreException(string $exceptionClass)
  • 至少
  • unitlNotNulluntilNull 等。

许可证

Exspecto 在MIT许可证下发布。有关详细信息,请参阅捆绑的LICENSE文件。

作者

Arkadiusz Kondas (@ArkadiuszKondas)