rikta/test-webhook

一个用于集成测试的临时 webhook 的非常基础的实现

dev-main 2021-09-19 21:03 UTC

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]