for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Spatie\EventProjector;
use PHPUnit\Framework\Assert;
class FakeAggregateRoot
{
/** @var \Spatie\EventProjector\AggregateRoot */
private $aggregateRoot;
public function __construct(AggregateRoot $aggregateRoot)
$this->aggregateRoot = $aggregateRoot;
}
public function given(array $events)
foreach($events as $event) {
$this->aggregateRoot->recordThat($event);
$this->aggregateRoot->persist();
return $this;
public function when($callable)
$callable($this->aggregateRoot);
public function assertNothingRecorded()
Assert::assertCount(0, $this->aggregateRoot->getRecordedEvents());
$this->aggregateRoot->getRecordedEvents()
array
object<Countable>|object...nit\Framework\iterable>
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example:
function acceptsInteger($int) { } $x = '123'; // string "123" // Instead of acceptsInteger($x); // we recommend to use acceptsInteger((integer) $x);
public function assertRecorded(array $expectedEvents): void
Assert::assertEquals($expectedEvents, $this->aggregateRoot->getRecordedEvents());
public function __call($name, $arguments)
$this->aggregateRoot->$name(...$arguments);
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example: