检测 Laravel Dusk 何时运行

问题描述 投票:0回答:1

在 Laravel 中,我通常需要检测环境以避免在运行测试时触发某些代码,例如记录或发送电子邮件:

if (!app()->environment("testing")) {
    Mail::to($email)->queue(new WelcomeEmail($transaction->id));
}

当我的 4 个环境文件中的 3 个环境文件(本地和 CI/CD 单元测试、CI/CD 上的 Dusk)中的环境设置为

testing
时,效果很好,但是我的
.env.dusk.local
文件 - I need 才能运行Laravel Dusk 本地 - 有一个
local
环境,在这些情况下 Dusk 会触发发送电子邮件、日志等。

我能看到的最干净的解决方案是检测 Dusk 是否在任何环境中运行 - 我知道有一个

app()->runningUnitTests()
方法,但不知道 Dusk 的等效方法。

php laravel testing integration-testing laravel-dusk
1个回答
0
投票

Dusk 将检查文件

.env.dusk.<environment>

local
环境为例,它会检查
.env.dusk.local
。在该文件中设置
APP_ENV=dusk
将允许您在必要时添加诸如
if(app()->environment('dusk'))
之类的检查。

正如评论中所指出的,对于发送邮件或日志记录的具体示例,您通常最好将

MAIL_DRIVER
LOG_CHANNEL
覆盖为适合测试的内容,例如
MAIL_DRIVER=log
LOG_CHANNEL=daily
,这样您仍然可以在不发送实际电子邮件的情况下测试该功能。

© www.soinside.com 2019 - 2024. All rights reserved.