1. Go to this page and download the library: Download selective/test-traits library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
selective / test-traits example snippets
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Mailer\EventListener\EnvelopeListener;
use Symfony\Component\Mailer\EventListener\MessageListener;
use Symfony\Component\Mailer\EventListener\MessageLoggerListener;
use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mailer\Transport;
use Symfony\Component\Mailer\Transport\TransportInterface;
// ...
return [
// Mailer
MailerInterface::class => function (ContainerInterface $container) {
return new Mailer($container->get(TransportInterface::class));
},
// Mailer transport
TransportInterface::class => function (ContainerInterface $container) {
$settings = $container->get('settings')['smtp'];
// smtp://user:[email protected]:25
$dsn = sprintf(
'%s://%s:%s@%s:%s',
$settings['type'],
$settings['username'],
$settings['password'],
$settings['host'],
$settings['port']
);
$eventDispatcher = $container->get(EventDispatcherInterface::class);
return Transport::fromDsn($dsn, $eventDispatcher);
},
EventDispatcherInterface::class => function () {
$eventDispatcher = new EventDispatcher();
$eventDispatcher->addSubscriber(new MessageListener());
$eventDispatcher->addSubscriber(new EnvelopeListener());
$eventDispatcher->addSubscriber(new MessageLoggerListener());
return $eventDispatcher;
},
// ...
],
namespace App\Test\TestCase;
use PHPUnit\Framework\TestCase;
use Selective\TestTrait\Traits\ContainerTestTrait;
use Selective\TestTrait\Traits\MailerTestTrait;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
final class MailerExampleTest extends TestCase
{
use ContainerTestTrait;
use MailerTestTrait;
public function testMailer(): void
{
$mailer = $this->container->get(MailerInterface::class);
// Send email
$email = (new Email())
->from('[email protected]')
->to('[email protected]')
->subject('Time for Symfony Mailer!')
->text('Sending emails is fun again!')
->html('<p>My HTML content</p>');
$mailer->send($email);
$this->assertEmailCount(1);
$this->assertEmailTextBodyContains($this->getMailerMessage(), 'Sending emails is fun again!');
$this->assertEmailHtmlBodyContains($this->getMailerMessage(), '<p>My HTML content</p>');
}
}
namespace App\Test\TestCase;
use PHPUnit\Framework\TestCase;
use Selective\TestTrait\Traits\ContainerTestTrait;
use Selective\TestTrait\Traits\HttpTestTrait;
class GetUsersTestAction extends TestCase
{
use ContainerTestTrait;
use HttpTestTrait;
public function test(): void
{
$request = $this->createRequest('GET', '/api/users');
$response = $this->app->handle($request);
$this->assertSame(200, $response->getStatusCode());
}
}
namespace App\Test\TestCase;
use PHPUnit\Framework\TestCase;
use Selective\TestTrait\Traits\ContainerTestTrait;
use Selective\TestTrait\Traits\HttpTestTrait;
use Selective\TestTrait\Traits\RouteTestTrait;
final class GetUsersTestAction extends TestCase
{
use ContainerTestTrait;
use HttpTestTrait;
use RouteTestTrait;
public function test(): void
{
$request = $this->createRequest('GET', $this->urlFor('get-users'));
$response = $this->app->handle($request);
$this->assertSame(200, $response->getStatusCode());
}
}