Laravel5.3 phpunit для пользовательского домена не работает

Когда я пытаюсь использовать личный домен, подобный этому

<?php

abstract class TestCase extends Illuminate\Foundation\Testing\TestCase
{
/**
 * The base URL to use while testing the application.
 *
 * @var string
 */
protected $baseUrl = 'http://localhost';

protected $prefixDomain = '';

/**
 * Creates the application.
 *
 * @return \Illuminate\Foundation\Application
 */
public function createApplication()
{
    $app = require __DIR__.'/../bootstrap/app.php';

    $app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
    $this->setBaseUrl();

    return $app;
}

protected function setBaseUrl()
{
    $this->baseUrl = env('APP_URL', $this->baseUrl);
    if ($this->prefixDomain) {
        $this->baseUrl = substr_replace(
            $this->prefixDomain,
            $this->baseUrl,
            strlen('https://'),
            0
        );
    }
}

Я установил «APP_URL» в файле .env.

Кажется, что uri запроса неверен, когда я сбрасываю и умираю в Illuminate\Routing\RouteCollection.php

/**
 * Find the first route matching a given request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Routing\Route
 *
 * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
 */
public function match(Request $request)
{
    dd($request);
    $routes = $this->get($request->getMethod());

вывод, который я ожидаю здесь, это «REQUEST_URI» => «/ test», но на самом деле

введите здесь описание изображения

Заранее благодарю за любую помощь.


person hanachan1026    schedule 21.01.2017    source источник


Ответы (1)


Кажется, я исправил эту проблему. Я должен был добавить "http://" в APP_URL

// .env
APP_URL=http://domain.com

Код, который я должен был увидеть, находится здесь

// Illuminate\Foundation\Testing\Concerns\MakesHttpRequests@654
protected function prepareUrlForRequest($uri)
{
    if (Str::startsWith($uri, '/')) {
        $uri = substr($uri, 1);
    }

    if (! Str::startsWith($uri, 'http')) {
        $uri = $this->baseUrl.'/'.$uri;
    }

    return trim($uri, '/');
}

Надеюсь, это поможет кому-то вроде меня!

person hanachan1026    schedule 22.01.2017