【发布时间】:2018-03-09 05:30:48
【问题描述】:
当我在 DB::Connection()->getPdo(); 上执行 try/catch 时,我收到错误 尚未设置门面根。 我相信在我尝试之前,Schema 门面也会发生这种情况添加尝试/捕获。 tests 目录当然在 app 目录之外,我感觉它与此有关,但我没有成功弄清楚。
这是发生这种情况的测试类:
<?php
namespace Tests\Models;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
use App\Models\Discussion;
use App\User;
use Business\Database\Model;
use Illuminate\Database\Schema\Blueprint;
use Tests\TestCase;
class DiscussionModelTest extends TestCase
{
/**
* Create the tables this model needs for testing.
*/
public static function setUpBeforeClass()
{
try {
DB::connection()->getPdo();
} catch(\Exception $e) {
die($e->getMessage());
}
Schema::create('discussions', function (Blueprint $table) {
$table->integer('id');
$table->integer('user_id');
$table->foreign('user_id')->references('id')->on('users');
});
Schema::create('users', function (Blueprint $table) {
$table->integer('id');
});
}
}
【问题讨论】:
-
在单元测试中构建模式有点令人担忧。通常您希望预先构建一个数据库,然后使用
Illuminate\Foundation\Testing\DatabaseTransactionstrait 确保在单元测试完成时退出。
标签: laravel laravel-5 phpunit facade laravel-5.5