use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
use Symfony\Component\Messenger\Transport\Sender\SendersLocator;
class SendMessageMiddlewareTest extends MiddlewareTestCase
{ public function testItSendsTheMessageToAssignedSender() { $message =
new DummyMessage('Hey'
);
$envelope =
new Envelope($message);
$sender =
$this->
createMock(SenderInterface::
class);
$sendersLocator =
$this->
createSendersLocator([DummyMessage::
class => ['my_sender'
]],
['my_sender' =>
$sender]);
$middleware =
new SendMessageMiddleware($sendersLocator);
$sender->
expects($this->
once())->
method('send'
)->
with($envelope->
with(new SentStamp($sender::
class, 'my_sender'
)))->
willReturnArgument(0
);
$envelope =
$middleware->
handle($envelope,
$this->
getStackMock(false
));
/* @var SentStamp $stamp */
$this->
assertInstanceOf(SentStamp::
class,
$stamp =
$envelope->
last(SentStamp::
class), 'it adds a sent stamp'
);
$this->
assertSame('my_sender',
$stamp->
getSenderAlias());
$this->
assertStringMatchesFormat('Mock_SenderInterface_%s',
$stamp->
getSenderClass());
}