Bootstrap laravel среда в тестовом файле - PullRequest
1 голос
/ 30 апреля 2020

Мне часто нравится тестировать свои методы класса (перед написанием реальных модульных тестов), создав простой файл PHP, который создает экземпляр класса, и затем связываться с переменными в XDebug.

Я создал файл для тестирования с именем testing.php на root сайта laravel, и я просто хочу выполнить этот файл и посмотреть, взаимодействуют ли объекты так, как я ожидал. Однако я не могу правильно получить приложение для 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

Видимо, есть дополнительный шаг (s) что мне нужно предпринять, чтобы заставить это работать - кто-нибудь знает, как заставить работать соединения с БД?

1 Ответ

0 голосов
/ 30 апреля 2020

Вы должны «запустить» приложение перед его использованием.

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));
...