gpt4 book ai didi

docker - Laravel 与 Docker : wrong DB selected when testing

转载 作者:行者123 更新时间:2023-11-28 21:37:43 25 4
gpt4 key购买 nike

我的 docker 容器是这样的:

  • worklog_laravel_app(Laravel 应用)
  • worklog_laravel_web (Nginx)
  • worklog_laravel_db (MySQL)

我在 worklog_laravel_db 容器中设置了两个数据库:

  • 工作日志
  • worklog_test

现在,我正在通过 docker exec -it bashworklog_laravel_app 容器上为我的应用编写测试。

我已经将我的 env.testing 设置为与 .env 具有相同的变量,除了:

  • APP_ENV=testing
  • DB_DATABASE=worklog_test

但是运行测试最终还是会选择本地开发数据库(worklog)。

为什么会这样?我该如何解决这个问题?


编辑 1:

我通过观察 worklog 表中的种子数据在运行测试后被删除以及每次运行测试时这些表的 auto_increments 发生变化来验证这一点.


编辑 2:

忘记提及,我的 Docker 设置遵循 DigitialOcean 中的设置。


编辑 3:

我的 .env.testing 变量:

APP_NAME="Work Log"
APP_ENV=testing
APP_KEY={}
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=worklog_laravel_db
DB_PORT=3306
DB_DATABASE=worklog_test
DB_USERNAME=local
DB_PASSWORD={}

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

最佳答案

首先,确保您的测试环境名为 .env.testing,然后确保您在 TestCase.php 文件中指定的 TestCase.php 文件位于 createApplication( ) 方法,你指定这一行:

$app->loadEnvironmentFrom('.env.testing');

确保将它放在之前 Bootstrap 加载,否则它不会工作。您的 createApplication 方法应如下所示:

public function createApplication()
{
$app->loadEnvironmentFrom('.env.testing');

$app = require __DIR__.'/../bootstrap/app.php';

$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();

return $app;
}

关于docker - Laravel 与 Docker : wrong DB selected when testing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56458295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com