Aşağıdaki örneği kullanarak Swiftmailer'i test edebilirsiniz. Eğer symfony profilerdan Email tabını açarsanız, emailin orada olduğunu göreceksiniz. Email test etme hakkında daha fazla bilgi için burayı ziyaret ediniz.


Config_test.yml


framework:
profiler:
collect: true

Email gönderme


Gönderdiğiniz emaillere $uniqueId değişkeni ile benzersiz kod atayın.


….......
$subject = 'Test message';
$body = 'Hi,
How are you?
Kind regards';
$uniqueId = '1234QWERTY';
….......
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBody($body);

$message->getHeaders()->addTextHeader('X-Message-ID', $uniqueId);
….......

Gherkin



Feature: Test

@mink:symfony2
Scenario: I can send email
Then I should get an email with ID "1234QWERTY" and subject "Test message" containing:
"""
Hi,
How are you?
Kind regards
"""

FeatureContext.php


Eğer BehatContext'i kullanıyorsanız $this->getMainContext()->getSession() kodunu, eğer MinkContext kullanıyorsanız $this->getSession() kodunu kullanabilirsiniz.


use Behat\Gherkin\Node\PyStringNode;
use Behat\Mink\Exception\UnsupportedDriverActionException;
use Behat\Symfony2Extension\Driver\KernelDriver;
use RuntimeException;

class FeatureContext extends BehatContext implements KernelAwareInterface
{
/**
* @Given /^I should get an email with ID "([^"]*)" and subject "([^"]*)" containing:$/
*
* @param string $id
* @param string $subject
* @param PyStringNode $body
*
* @throws ErrorException
* @throws UnsupportedDriverActionException
*/
public function iShouldGetAnEmail($id, $subject, PyStringNode $body)
{
$profile = $this->getSymfonyProfile();
$collector = $profile->getCollector('swiftmailer');
$body = $body->getRaw();

foreach ($collector->getMessages() as $message) {
$headers = $message->getHeaders();
if (
$headers->has('X-Message-ID') &&
$headers->get('X-Message-ID')->getFieldBodyModel() == $id &&
$message->getSubject() == $subject &&
trim($message->getBody()) == $body
) {
return;
}
}

throw new ErrorException(sprintf('No message with ID "%s" sent.', $id));
}

private function getSymfonyProfile()
{
$driver = $this->getMainContext()->getSession()->getDriver();

if (!$driver instanceof KernelDriver) {
throw new UnsupportedDriverActionException(
'You need to tag the scenario with "@mink:symfony2". Using the profiler is not supported by %s.', $driver
);
}

$profile = $driver->getClient()->getProfile();

if (false === $profile) {
throw new RuntimeException(
'The profiler is disabled. Activate it by setting framework.profiler.collect to true in your config'
);
}

return $profile;
}
}