rikta / test-webhook
一个用于集成测试的临时 webhook 的非常基础的实现
Requires
- jasny/http-message: ^1.3
- rikta/timed-loop: ^1.0
- symfony/process: ^5.3
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-20 03:44:42 UTC
README
这是一个用于集成测试的临时 webhook 的非常基础的实现。
如果你需要在测试期间需要一个来自其他应用程序调用的入站 webhook,这将很有用。
安装
composer require --dev rikta/test-webhook
用法
初始化
只需创建一个 WebhookServer
的实例并保持引用活跃。这将提供一个随机端口上的 webhook 服务器。
您可以使用 $server->getUrl()
获取此服务器实例 webhook 的 URL。如果您的调用应用程序在您的机器/容器外,您必须提供此机器的外部主机名/IP。
查询数据
$server->query()
提供了一个新的查询对象,它提供了一种简单的方式来查询数据。
您可以使用 $server->query()->get()
获取所有当前存储的请求作为 PSR-7 ServerRequestInterface 对象。
get()
$query->get()
将
- 获取所有当前存储的请求,
- 应用提供的排序,
- 应用提供的过滤器,
- 返回一个 PSR-7 ServerRequestInterface 对象数组。
示例: $lastTwoRequests = $server->query()->last(2)->get()
count()
$query->count()
将返回匹配请求的数量。
first($n)/last($n)
$query->first($n)
和 $query->last($n)
将结果减少到前 n 个/后 n 个请求。
如果没有提供 $n
,它将减少到单个请求。
示例: $lastTwoRequests = $server->query()->last(2)->get()
sort(?callable $sortFunction = null)
$query->sort(?callable $sortFunction = null)
将使用提供的比较函数(在 ServerRequestInterface
上)对结果进行排序。
如果没有提供 $sortFunction
,它将以时间顺序进行排序。
示例: $requestChronic = $server->query()->sort()->get()
filter(callable $callable)
$query->filter($callable)
允许提供一个 $callable
给结果周围的 array_filter。
示例
$query = $server ->query() ->filter(fn (ServerRequestInterface $r) => $request->getBody()->getContents() === 'Hello World!'); self::assertEquals(2, $query->count());
delete()
$query->delete()
将删除所有匹配的请求。
示例: $server->query()->last(2)->delete()
waitForMatchingRequests(int $amount = 1, $maxSeconds = 10)
$query->waitForMatchingRequests
将等待直到 $amount 个匹配的请求到达。或者在 $maxSeconds 后抛出 LoopTimeoutException。
示例: $request = $server->query()->waitForMatchingRequests()->get()[0]