Bootstrap laravel 测试文件中的环境

Bootstrap laravel environment in test file

我经常喜欢通过创建一个实例化 class 的简单 PHP 文件来测试我的 class 方法(在编写实际单元测试之前),然后弄乱其中的变量X调试。

我在 laravel 站点的根目录中创建了一个名为 testing.php 的测试文件,我只想执行此文件并查看对象是否像我期望的那样交互.但是,我不能完全将应用程序正确地设置为 bootstrap。该文件如下所示:

<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

use App\User;

$user = User::find(1); // there's a breakpoint on this line

$a = true;

当我执行此操作时(运行 在 phpstorm 中进行调试)我从未找到数据库连接中得到一个错误:

PHP Fatal error:  Uncaught Error: Call to a member function connection() on null in /opt/project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1285

显然我需要采取额外的步骤才能完成这项工作——有人知道如何让数据库连接正常工作吗?

您必须 "start" 该应用程序才能使用它。

require __DIR__.'/vendor/autoload.php';

/** @var \Illuminate\Foundation\Application $app */
$app = require_once __DIR__.'/bootstrap/app.php';

$app->bootstrapWith([
    \Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables::class,
    \Illuminate\Foundation\Bootstrap\LoadConfiguration::class,
    \Illuminate\Foundation\Bootstrap\HandleExceptions::class,
    \Illuminate\Foundation\Bootstrap\RegisterFacades::class,
    \Illuminate\Foundation\Bootstrap\SetRequestForConsole::class,
    \Illuminate\Foundation\Bootstrap\RegisterProviders::class,
    \Illuminate\Foundation\Bootstrap\BootProviders::class,
]);

$app->boot();

$app->registerConfiguredProviders();

dd(User::find(12341234));