/**
  * @param UnitOfWorkListenerCollection               $listeners
  * @param StagingEventContainerFactory               $stagingEventContainerFactory
  * @param AggregateContainerFactory                  $aggregateContainerFactory
  * @param UnitOfWorkEventRegistrationCallbackFactory $unitOfWorkEventRegistrationCallbackFactory
  * @param TransactionManager                         $transactionManager
  */
 public function __construct(UnitOfWorkListenerCollection $listeners, StagingEventContainerFactory $stagingEventContainerFactory, AggregateContainerFactory $aggregateContainerFactory, UnitOfWorkEventRegistrationCallbackFactory $unitOfWorkEventRegistrationCallbackFactory, TransactionManager $transactionManager = null)
 {
     $this->listeners = $listeners;
     $this->stagingEvents = $stagingEventContainerFactory->create();
     $this->registeredAggregates = $aggregateContainerFactory->create($this, $unitOfWorkEventRegistrationCallbackFactory);
     $this->transactionManager = $transactionManager;
 }
 public function let(UnitOfWorkListenerCollection $listeners, StagingEventContainerFactory $stagingEventContainerFactory, AggregateContainerFactory $aggregateContainerFactory, UnitOfWorkEventRegistrationCallbackFactory $eventRegistrationCallbackFactory, TransactionManager $transactionManager, StagingEventContainer $stagingEventContainer, AggregateContainer $aggregateContainer)
 {
     $stagingEventContainerFactory->create()->willReturn($stagingEventContainer);
     $aggregateContainerFactory->create(Argument::any(), $eventRegistrationCallbackFactory)->willReturn($aggregateContainer);
     $this->beConstructedWith($listeners, $stagingEventContainerFactory, $aggregateContainerFactory, $eventRegistrationCallbackFactory, $transactionManager);
 }