37140554d3
根因:docker compose 將 DB_CONNECTION=mysql 注入為真實環境變數, PHPUnit 的 <env force> 只覆蓋 $_ENV/putenv,但 Laravel env() 優先讀 $_SERVER,導致 RefreshDatabase 一直在清空開發 DB(今日實際發生三次, 也是先前『DB 神秘清空』的元凶)。 - 新增 tests/bootstrap.php 於載入前同步覆蓋 $_SERVER/$_ENV/putenv - phpunit.xml bootstrap 指向新檔,DB env 加 force 屬性 - 驗證:容器內全套件後 MySQL 資料存活(users=13) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
14 lines
614 B
PHP
14 lines
614 B
PHP
<?php
|
||
|
||
// docker compose 將 DB_CONNECTION=mysql 注入為真實環境變數(存在於 $_SERVER),
|
||
// PHPUnit 的 <env force="true"> 只覆蓋 $_ENV / putenv,而 Laravel env() 透過
|
||
// phpdotenv 優先讀 $_SERVER——導致容器內跑測試時 RefreshDatabase 直接清空
|
||
// 開發用 MySQL(2026-06-12 實際發生三次)。必須在 bootstrap 階段三者同步強制。
|
||
foreach (['DB_CONNECTION' => 'sqlite', 'DB_DATABASE' => ':memory:'] as $key => $value) {
|
||
$_SERVER[$key] = $value;
|
||
$_ENV[$key] = $value;
|
||
putenv("{$key}={$value}");
|
||
}
|
||
|
||
require __DIR__ . '/../vendor/autoload.php';
|