Тестирование событий и почты в Laravel 5.2 - PullRequest
0 голосов
/ 19 февраля 2019

Я изо всех сил пытаюсь справиться с проверкой события в классе и почтовым звонком.Есть ли альтернатива тому, что поставляется с Laravel 5.5+, Mail::fake() и аналогичными, в Laravel 5.2?

Вот пример тестового класса

<?php

namespace tests\SampleTest;

use tests\TestCase;
use App\Foo\Bar; 

class BarTest extends TestCase
{
    public function testBar() {
        $class = new Bar();
        $class->methodWithEvent();

        // Event is called. Inside event we call Mail
        $this->expectsEvents(App\Events\BarEvent::class);
    }
}

Пример класса бара

<?php

namespace App\Foo;

use App\Events\BarEvent;
use Event;

class Bar 
{
    public function methodWithEvent() 
    {
        Event::fire(new BarEvent()); 
    }
}

Пример файла события - файл по умолчанию Пример файла прослушивания - метод обработчика

public function handle(BarEvent $event)
{ 
    $emailData = [
       'from' => 'test@hotmail.com', 
       'email' => 'joe.doe@hotmail.com',
       'title' => 'Test'
    ];

    Mail::send('Test Message', ['html' => 'HTML Message'], function ($mail) use ($emailData) {
        $mail->from($emailData['from']);
        $mail->to($emailData['email'])->subject($emailData['title']);
    }); 
}

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать службу захвата электронной почты, например MailTrap , чтобы помочь проверить электронную почту.Если вы сконфигурируете свой PHPUnit для использования SMTP-данных MailTrap, MailTrap может перехватывать все тестовые события.

В качестве альтернативы вы можете установить почтовый драйвер на log, чтобы он не отправлялся на адрес электронной почты,но записано в файле журнала Laravel.

Laravel 5.2 также поддерживает конфигурацию pretend.Если вы установите MAIL_PRETEND в вашем .env файле на true, Laravel не будет отправлять электронные письма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...