mirror of
https://github.com/pestphp/pest.git
synced 2026-03-06 15:57:21 +01:00
72 lines
1.6 KiB
PHP
72 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Pest\Support;
|
|
|
|
use Closure;
|
|
use Pest\Expectation;
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
final class HigherOrderCallables
|
|
{
|
|
/**
|
|
* Creates a new Higher Order Callables instances.
|
|
*/
|
|
public function __construct(private readonly object $target)
|
|
{
|
|
// ..
|
|
}
|
|
|
|
/**
|
|
* @template TValue
|
|
*
|
|
* Create a new expectation. Callable values will be executed prior to returning the new expectation.
|
|
*
|
|
* @param (Closure():TValue)|TValue $value
|
|
* @return Expectation<TValue>
|
|
*/
|
|
public function expect(mixed $value): Expectation
|
|
{
|
|
/** @var TValue $value */
|
|
$value = $value instanceof Closure ? Reflection::bindCallableWithData($value) : $value;
|
|
|
|
return new Expectation($value);
|
|
}
|
|
|
|
/**
|
|
* @template TValue
|
|
*
|
|
* Create a new expectation. Callable values will be executed prior to returning the new expectation.
|
|
*
|
|
* @param callable|TValue $value
|
|
* @return Expectation<(callable(): mixed)|TValue>
|
|
*/
|
|
public function and(mixed $value): Expectation
|
|
{
|
|
return $this->expect($value);
|
|
}
|
|
|
|
/**
|
|
* Execute the given callable after the test has executed the setup method.
|
|
*
|
|
* @deprecated This method is deprecated. Please use `defer` instead.
|
|
*/
|
|
public function tap(callable $callable): object
|
|
{
|
|
return $this->defer($callable);
|
|
}
|
|
|
|
/**
|
|
* Execute the given callable after the test has executed the setup method.
|
|
*/
|
|
public function defer(callable $callable): object
|
|
{
|
|
Reflection::bindCallableWithData($callable);
|
|
|
|
return $this->target;
|
|
}
|
|
}
|