Наследование: extends Prooph\Common\Messaging\Command, implements Prooph\Common\Messaging\PayloadConstructable, implements Prooph\ServiceBus\Async\AsyncMessage, use trait Prooph\Common\Messaging\PayloadTrait
 /**
  * @test
  */
 public function marked_message_is_passed_to_decorated_router_as_already_handled_by_async_provider()
 {
     $messageProducer = $this->prophesize(MessageProducer::class);
     $decoratedRouter = $this->prophesize(SingleHandlerRouter::class);
     $message = AsyncCommand::createCommand('test-data');
     $message = $message->withAddedMetadata('handled-async', true);
     $actionEvent = new DefaultActionEvent(AsyncCommand::class, new CommandBus(), [MessageBus::EVENT_PARAM_MESSAGE_NAME => get_class($message), MessageBus::EVENT_PARAM_MESSAGE => $message]);
     $decoratedRouter->onRouteMessage($actionEvent)->willReturn('handled-by-decorated-router');
     $router = new AsyncSwitchMessageRouter($decoratedRouter->reveal(), $messageProducer->reveal());
     $rtn = $router->onRouteMessage($actionEvent);
     $this->assertEquals('handled-by-decorated-router', $rtn);
     $updatedMessage = $actionEvent->getParam(MessageBus::EVENT_PARAM_MESSAGE);
     $this->assertArrayHasKey('handled-async', $updatedMessage->metadata());
     $this->assertTrue($updatedMessage->metadata()['handled-async']);
 }