assertQueued 在 Bitbucket 管道中失败

assertQueued failing in Bitbucket pipeline

如标题中所述,assertQueued 在我的 Bitbucket 管道中失败,但在本地不会失败。

有问题的测试可以在下面看到:

Mail::fake();
Queue::fake();

/*Generating users and triggering emails*/

$users = User::all();
foreach($users as $user){
    Mail::assertQueued(Email::class, function ($mail) use ($user) {
        return $mail->hasTo($user->preferred_email);
    });
}

它只是创建用户,向这些用户发送电子邮件,然后检查这些电子邮件是否已排队。

phpunit.xml 文件设置环境变量如下所示:

<env name="APP_ENV" value="testing"/>
<env name="DB_DATABASE_API" value="homestead"/>
<env name="MAIL_DRIVER" value="log"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="database"/>

所有这些都在本地工作。但是,当 运行 通过 Bitbucket 管道将其全部连接时,上面的测试失败并显示:

The expected [App\Mail\Email] mailable was not queued.
Failed asserting that false is true.

邮件如下:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class Email extends Mailable
{
    use Queueable, SerializesModels;

    public $email;
    public $subject;

    /**
     * Create a new message instance.
     *
     * @param $email
     * @param $subject
     */
    public function __construct($email, $subject)
    {
        $this->email = $email;
        $this->subject = $subject;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject($this->subject)->view('contact.emails.email');
    }
}

正在排队电子邮件:

Mail::to($user->preferred_email)->queue(new Email($user->preferred_email, $subject)));

正在使用的docker图像是PHP:7.2-fpm。安装了以下内容:

Composer installartisan migrate都是运行 before PHP单位是运行。除该单一测试外,所有测试均通过。没有其他测试使用 assertQueued 断言。与数据库相关的测试没有问题,并且使用 assertSentTo 的测试用于使用 Queueable 特征通过的通知没有问题。

如果您需要任何进一步的信息,请告诉我!感谢您的帮助。

确认您的包版本是最新的。 Bitbucket Pipelines 可能会出现一些奇怪的问题,它知道时不时会发生这种情况。