Почтовый тест Laravel 5.4

Звучит достаточно просто, но я не могу понять, как передать данные в указанный ниже почтовый ящик для тестирования. Он отлично работает при нормальном использовании.

Работает через контроллер

Mail::to($user)->send(new C2cMail($this->commitment->data, \App\EModule::findOrFail($this->commitment->module_id), $user));

Отправляем по почте

    public function __construct($commitment, Module $module, User $user)
    {
        $this->commitment = unserialize($commitment);
        $this->module = $module;
        $this->user = $user;
        $this->title = $this->module->title;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        try {
            if (empty(env('MAIL_FROM')) || !env('MAIL_FROM') || env('MAIL_FROM') == null){
                throw new \Exception("You must set your MAIL_FROM environment variable", 406);
            }
            $this->from(env('MAIL_FROM'))->subject('First email test')->view('mail.c2c-1');
        } catch (\Exception $e) {
            \Log::error($e->getMessage());
        }
    }

Итак, все работает нормально, но я не могу получить модульный тест для передачи данных в почтовый конструктор.

Прецедент

public function testC2cEmailSend()
    {
        Mail::fake();

        // Grab any old C2C entry
        $c2c = \App\Commitment::with(['module', 'user'])->first();

        $data = $c2c->data;
        $user = $c2c->user;
        $module = $c2c->module;
        $mailable_data = ['data' => $data, 'user' => $user, 'module' => $module];

        Mail::assertSent(C2cFirst::class, function($mail) use ($mailable_data) {
            return $mail->hasTo($mailable_data['user']->email);
        });
    }
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
462
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самостоятельно решен

Это было неправильное понимание того, как на самом деле работает Mail::fake(). Он захватывает класс Mail и заменяет его экземпляром MailFake; и поэтому размещение его над желаемой функциональностью предотвращает фактическую отправку.

Mail :: fake () не проверяет наличие проблемы внутри электронной почты. Mailable-> build () никогда не выполняется, а почтовый ящик никогда не создается.

Yevgeniy Afanasyev 28.09.2020 05:42

@YevgeniyAfanasyev Верно

ggdx 01.10.2020 17:37

тогда это должен быть не вопрос "почтового теста", а скорее вопрос "тестового почтового сообщения".

Yevgeniy Afanasyev 06.10.2020 02:10

Что ж, я не веду дневник, этому вопросу больше двух лет, а вы ломаете голову над проблемой, которая меня больше не волнует.

ggdx 06.10.2020 19:51

Другие вопросы по теме