Функциональная проверка процесса, который отправляет электронное письмо с двумя получателями (один To:, один Cc :), неправильно запрашивает одного и того же получателя как To: и Cc.
В среде разработчиков процесс, указанный в приведенном ниже тесте, отправляет электронное письмо по адресу [email protected] с Cc по адресу [email protected]. (Выполнение процесса в режиме тестовой отладки подтверждает правильность получателей.) Однако приведенный ниже тест не пройден. Замена получателя To: на [email protected] позволяет успешно пройти тест.
Выход с print_r($recipient);
в почтовом процессе во время теста.
PHPUnit 4.3.5 by Sebastian Bergmann.
Configuration read from G:\Documents\workspace\volunteer\app\phpunit.xml.dist
FArray
(
[0] => [email protected]
)Time: 4.5 seconds, Memory: 26.25Mb
There was 1 failure:
1) Truckee\MatchingBundle\Tests\Controller\AdminMailerTest::testActivateOrganizationEmail
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'[email protected]'
+'[email protected]'
swiftmailer:
logging: true
swiftmailer:
# disable_delivery: true
# delivery_address: [email protected]
public function testActivateOrganizationEmail()
{
$crawler = $this->login('admin');
$this->client->followRedirects(false);
$link = $crawler->selectLink('Accept organization')->link();
$crawler = $this->client->click($link);
$mailCollector = $this->client->getProfile()->getCollector('swiftmailer');
$this->assertEquals(1, $mailCollector->getMessageCount());
$collectedMessages = $mailCollector->getMessages();
$message = $collectedMessages[0];
$this->assertEquals('[email protected]', key($message->getTo()));
$this->assertEquals('[email protected]', key($message->getCc()));
}
В этом случае есть единственный элемент [email protected] в $to
и один элемент [email protected] в $this->adminRecipients
,
public function activateOrgMail($organization, $to)
{
$recipient = [];
foreach ($to as $user) {
$recipient[] = $this->getAddressee($user);
}
$cc = $this->adminRecipients();
if (!empty($recipient)) {
$message = \Swift_Message::newInstance()
->setSubject('Organization now active')
->setFrom($this->parameters['address'])
->setTo($recipient[0])
->setCc($cc)
->setContentType('text/html')
->setBody(
$this->twig->render(
'activated_org', array(
'organization' => $organization,
'recipient' => $recipient,
), 'text/html'
)
)
;
return $this->mailer->send($message);
}
else {
return 0;
}
}
private function adminRecipients()
{
$em = $this->em;
$admins = $em->getRepository("TruckeeMatchingBundle:Admin")->findBy(['locked' => false]);
$adminEmail = [];
foreach ($admins as $admin) {
$email = $admin->getEmail();
$adminEmail[] = $email;
}
return $adminEmail;
}
ARRRGGHHH! Это самая популярная проблема с неочищенным кешем. В этом случае, однако, необходимо очистить тестовый кеш! После очистки тесты завершаются успешно, как и ожидалось.
Других решений пока нет …