Laravel - Фасад root не установлен - PullRequest
0 голосов
/ 02 февраля 2020

У меня проблема с запуском тестов в приложении laravel. Мое приложение разделено на отдельные пространства имен. Laravel Пространство имен приложения находится в каталоге приложения, и это пространство имен App /. У меня есть дополнительное пространство имен в каталоге sr c.

Мой TestCase выглядит так:

<?php

namespace Tests\Unit;

use Illuminate\Foundation\Testing\DatabaseTransactions;
use PHPUnit\Framework\TestCase;
use SmoothCode\Sample\Domain\User\User;
use SmoothCode\Sample\Domain\User\UserRepository;
use SmoothCode\Sample\Domain\User\ValueObject\ConfirmationCode;
use SmoothCode\Sample\Shared\ValueObjects\Email;
use SmoothCode\Sample\Shared\ValueObjects\Id;
use SmoothCode\Sample\Shared\ValueObjects\Password;
use Tests\CreatesApplication;


class UserDomainTest extends TestCase
{
    use CreatesApplication;

    protected UserRepository $userRepository;

    public function testUserCreation() {
        $user = User::create(
            Id::generate(),
            'Jan',
            'Kowalski',
            new Email('test@test.com'),
            '123123123',
            new Password('Pass123!'),
            new \DateTimeImmutable(),
            ConfirmationCode::generate()
        );
//
//        $this->assertInstanceOf(User::class, $user);
    }

    protected function setUp(): void
    {
        parent::setUp();
    }


}

После запуска vendor / bin / phpunit я получаю следующую ошибку:

1) Tests\Unit\UserDomainTest::testUserCreation
RuntimeException: A facade root has not been set.

/home/jakub/Development/Projects/streetboss-server/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258
/home/jakub/Development/Projects/streetboss-server/src/Sample/Shared/ValueObjects/Password.php:15
/home/jakub/Development/Projects/streetboss-server/tests/Unit/UserDomainTest.php:29

Из этого я знаю, что проблема заключается в src / Sample / Shared / ValueObjects / Password. php: 15

, который выглядит так:

<?php

namespace SmoothCode\Sample\Shared\ValueObjects;

use Illuminate\Support\Facades\Hash;
use Webmozart\Assert\Assert;

class Password {
    protected string $hash;

    public function __construct($plainPassword)
    {
        Assert::minLength($plainPassword, 6);

        $this->hash = Hash::make($plainPassword);
    }

    public function hashedPassword()
    {
        return $this->hash;
    }


}
I was trying to run:
php artisan config:cache
php artisan cache:clear
php artisan config:clear
composer dump-autoload

Но я все еще получаю эту ошибку.

1 Ответ

0 голосов
/ 06 февраля 2020

Хорошо, я нашел решение для этой ошибки. Для тех, у кого возникла бы такая же проблема:

Мой UserDomainTest расширял TestCase из пространства имен:

use PHPUnit\Framework\TestCase;

, когда я изменил на:

use Illuminate\Foundation\Testing\TestCase;

все работает как очарование.

...