1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
<?php declare(strict_types=1);
namespace Invoker\Test\Mock;
/**
* Mock a callable and spies being called.
*/
class CallableSpy
{
/** @var callable|null */
private $callable;
/** @var int */
private $callCount = 0;
/** @var array */
private $parameters = [];
public static function mock($callable)
{
return new self($callable);
}
public function __construct($callable = null)
{
$this->callable = $callable;
}
public function __invoke()
{
$this->callCount++;
$this->parameters = func_get_args();
if ($this->callable === null) {
return null;
}
return call_user_func_array($this->callable, func_get_args());
}
/**
* @return int
*/
public function getCallCount()
{
return $this->callCount;
}
/**
* @return array
*/
public function getLastCallParameters()
{
return $this->parameters;
}
}
|