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。安装了以下内容:
- git
- 卷曲
- libmcrypt-dev
- default-mysql-client
- zip
- 解压缩
- 作曲家
Composer install和artisan migrate都是运行 before PHP单位是运行。除该单一测试外,所有测试均通过。没有其他测试使用 assertQueued 断言。与数据库相关的测试没有问题,并且使用 assertSentTo
的测试用于使用 Queueable 特征通过的通知没有问题。
如果您需要任何进一步的信息,请告诉我!感谢您的帮助。
确认您的包版本是最新的。 Bitbucket Pipelines 可能会出现一些奇怪的问题,它知道时不时会发生这种情况。
如标题中所述,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。安装了以下内容:
- git
- 卷曲
- libmcrypt-dev
- default-mysql-client
- zip
- 解压缩
- 作曲家
Composer install和artisan migrate都是运行 before PHP单位是运行。除该单一测试外,所有测试均通过。没有其他测试使用 assertQueued 断言。与数据库相关的测试没有问题,并且使用 assertSentTo
的测试用于使用 Queueable 特征通过的通知没有问题。
如果您需要任何进一步的信息,请告诉我!感谢您的帮助。
确认您的包版本是最新的。 Bitbucket Pipelines 可能会出现一些奇怪的问题,它知道时不时会发生这种情况。