Laravel PestUnit – не удалось подтвердить, что 404 идентичен 200

Я пытаюсь использовать PHP-фреймворк Pest для тестирования, но не могу выполнить простой тест.

it('can view home page', function () {
    $response = $this->get('/');

    expect($response->status())->toBe(200);
});

Я всегда получаю ошибку:

Не удалось подтвердить, что 404 идентично 200.

Кажется, URL-адрес читается неправильно. Вот конфигурация моих файлов:

.env-файл

APP_NAME = "My software name"
APP_ENV=local
APP_KEY=base64:abchdX+Hm/LYphNZIBx942SFZoJYzGUFGidCxQifqMw=
APP_DEBUG=true
APP_URL=http://localhost/mysoftware

phpunit.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<phpunit xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation = "./vendor/phpunit/phpunit/phpunit.xsd"
         bootstrap = "vendor/autoload.php"
         colors = "true">
    <testsuites>
        <testsuite name = "Unit">
            <directory suffix = "Test.php">./tests/Unit</directory>
        </testsuite>
        <testsuite name = "Feature">
            <directory suffix = "Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <source>
        <include>
            <directory suffix = ".php">./app</directory>
        </include>
    </source>
    <php>
        <env name = "APP_ENV" value = "local"/>
        <env name = "BCRYPT_ROUNDS" value = "4"/>
        <env name = "CACHE_DRIVER" value = "array"/>
        <!-- <env name = "DB_CONNECTION" value = "sqlite"/> -->
        <!-- <env name = "DB_DATABASE" value = ":memory:"/> -->
        <env name = "MAIL_MAILER" value = "array"/>
        <env name = "QUEUE_CONNECTION" value = "sync"/>
        <env name = "SESSION_DRIVER" value = "array"/>
        <env name = "TELESCOPE_ENABLED" value = "false"/>
    </php>
</phpunit>

Я читал некоторые темы, такие как:

https://www.reddit.com/r/laravel/comments/kivwyr/laravel_phpunit_test_pointing_to_wrong_url/

Настройка URL-адреса модульного теста Laravel 5 с помощью phpunit.xml

Laravel phpunit не получает правильный URL

Где я в конечном итоге пытаюсь исправить свой файл phpunit.xml, добавив:

<env name = "APP_URL" value = "http://localhost/mysoftware"/>

Но ошибка сохраняется. Что я могу сделать для дальнейшей отладки?


Редактировать 1) - В моих файлах маршрутов действительно есть маршруты / и /login, и не имеет значения, указывает ли тест на домашний маршрут или маршрут входа в систему, ошибка одна и та же.

it('can view home page', function () {
    $response = $this->get('/');

    expect($response->status())->toBe(200);
});

it('can view login page', function () {
    $response = $this->get('/login');

    expect($response->status())->toBe(200);
});

есть ли в вашем файле маршрутов маршрут, который ссылается на /?

Maraboc 23.04.2024 17:49

Конечно, я могу получить доступ к http://localhost/mysoftware. Та же ошибка происходит и с http://localhost/mysoftware/login.

Linesofcode 23.04.2024 17:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте удалить кэш конфигурации с помощью этой команды:

php artisan config:cache

И попробуйте это с этой конфигурацией в своем phpunit.xml:

<server name = "APP_URL" value = "http://localhost"/>

Я сделал это. Я даже пошла дальше, выступив cache:clear ; route:clear ; route:cache ; config:clear ; config:cache

Linesofcode 23.04.2024 18:01

проверьте новое обновление

Maraboc 23.04.2024 18:03

Предполагается, что эта строка находится внутри тега <php>? В любом случае, попробовал внутри и снаружи, но все равно не работает. Попробовал вместо http://localhost добавить http://localhost/mysoftware, проблема осталась. Также очищал кеш каждый раз, когда менял файл phpunit.xml.

Linesofcode 23.04.2024 18:07

Да внутри <php> оставь так <server name = "APP_URL" value = "http://localhost"/> нет <server name = "APP_URL" value = "http://localhost/mysoftware"/>

Maraboc 23.04.2024 18:08

Не повезло, не работает. Я только что проверил $response через XDebug, и свойство baseContent->response показывает мою страницу 404.blade.php со всеми ссылками, указывающими на http://localhost/ вместо http://localhost/mysoftware.

Linesofcode 23.04.2024 18:12
Ответ принят как подходящий

Решено.

Не знаю почему, но все заработало, изменив файл .env на этот:

APP_URL=http://localhost/mysoftware

к этому

APP_URL=http://localhost

Нет необходимости менять файл phpunit.xml (по крайней мере, в моем случае...)

Другие вопросы по теме