Вопрос:

Ошибка установки APP_ENV на «тестирование» для модульного тестирования в Laravel 5.5

laravel phpunit

1243 просмотра

2 ответа

21 Репутация автора

Я использую Laravel 5.5, phpunit 6.5.5 на Homestead-7 (я думаю).

Я пробую этот урок: https://laravel-news.com/your-first-laravel-application (и это должно рассказать вам о моем опыте работы с фреймворком)

Тестирование не удается (из-за TokenMismatchException), и мне удалось отследить основную причину для APP_ENVпеременной, которая установлена ​​в local, хотя я пробовал много способов установить ее testing.

В конце концов, что позволило мне преодолеть проблему, это установить переменную следующим образом:

APP_ENV=testing vendor/bin/phpunit

Затем испытания прошли успешно.

У меня вопрос, что я делаю не так? Вышеуказанный хак, очевидно, не лучший способ сделать это. Должен быть способ сделать это правильно.

Обновить

Содержание phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>

        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="DB_DATABASE" value=":memory:"/>
    </php>
</phpunit>

Заранее спасибо за ваше время.

Автор: mirnis Источник Размещён: 12.01.2018 01:47

Ответы (2)


7 плюса

2049 Репутация автора

Из документов Laravel :

При запуске тестов через phpunitLaravel автоматически устанавливает среду конфигурации testingиз-за переменных среды, определенных в phpunit.xmlфайле.

... так что держу пари, что ваш phpunit.xmlфайл отсутствует или неправильно настроен. Он должен находиться в корневом каталоге вашего проекта и содержать следующее:

<php>
    <env name="APP_ENV" value="testing"/>
    ...
</php>

Если вы делаете есть phpunit.xmlфайл в нужном месте , и это действительно содержит часть выше, и это до сих пор не работает, то попробуйте очистить кэш конфигурации:

php artisan config:clear

Если это по-прежнему не помогает, то я бы проверил что-то странное в phpunit.xmlфайле, например, ошибочное имя или синтаксическую ошибку.

А вот ссылка на оригинальный phpunit.xmlфайл, чтобы помочь вам восстановить его в случае необходимости.

Автор: jdunk Размещён: 12.01.2018 03:36

1 плюс

21 Репутация автора

Мне удалось найти проблему с моей системой. В своей усадьбе я включил в Homestead.yamlнастройку глобальной переменной окружения APP_ENV:

variables:
    - key: APP_ENV
    - value: local

Это было приведено в качестве примера в инструкции по настройке Homestead. Я следовал этому, не понимая, что я делал.

Установка заново через переменную .envили phpunit.xmlпросто не сработала. Я удалил определение, Homestead.yamlи оно работает так, как я и ожидал.

Автор: mirnis Размещён: 16.01.2018 09:24
Вопросы из категории :
32x32