-
-
Notifications
You must be signed in to change notification settings - Fork 9.4k
/
MailerTest.php
62 lines (49 loc) · 1.88 KB
/
MailerTest.php
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
57
58
59
60
61
62
<?php
namespace Symfony\Bundle\FrameworkBundle\Tests\Functional;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\SentMessage;
use Symfony\Component\Mailer\Transport\AbstractTransport;
use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Email;
class MailerTest extends WebTestCase
{
public function testEnvelopeListener()
{
self::bootKernel(['test_case' => 'Mailer']);
$onDoSend = function (SentMessage $message) {
$envelope = $message->getEnvelope();
$this->assertEquals(
[new Address('redirected@example.org')],
$envelope->getRecipients()
);
$this->assertEquals('sender@example.org', $envelope->getSender()->getAddress());
};
$eventDispatcher = self::$container->get(EventDispatcherInterface::class);
$logger = self::$container->get('logger');
$testTransport = new class($eventDispatcher, $logger, $onDoSend) extends AbstractTransport {
/**
* @var callable
*/
private $onDoSend;
public function __construct(EventDispatcherInterface $eventDispatcher, LoggerInterface $logger, callable $onDoSend)
{
parent::__construct($eventDispatcher, $logger);
$this->onDoSend = $onDoSend;
}
protected function doSend(SentMessage $message): void
{
$onDoSend = $this->onDoSend;
$onDoSend($message);
}
};
$mailer = new Mailer($testTransport, null);
$message = (new Email())
->subject('Test subject')
->text('Hello world')
->from('from@example.org')
->to('to@example.org');
$mailer->send($message);
}
}