Есть ли способ смоделировать запрос API по умолчанию, если вы находитесь в тестовой среде, использующей Laravel? - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть метод API, который вызывается щелчком по кнопке в форме, и внутри этого метода API есть запрос к другому API другого проекта с использованием guzzle. Это отлично работает.

Моя проблема в том, что я делаю тесты behat и хочу проверить свой метод API, но мне нужно смоделировать запрос к внешнему API (потому что мне не нужно его тестировать). Есть ли способ, которым Laravel обнаруживает, что я нахожусь в тестовой среде, и высмеиваю запрос, и если я нахожусь в нормальной среде, оставьте его без макета?

1 Ответ

2 голосов
/ 13 апреля 2019

В вашем проекте должен быть файл phpunit.xml, и вы можете установить там APP_ENV.

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
     ...
     processIsolation="false"
     stopOnFailure="false">
<testsuites>

    ... 

    <testsuite name="Unit">
        <directory suffix="Test.php">./tests/Unit</directory>
    </testsuite>
</testsuites>
<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">./app</directory>
    </whitelist>
</filter>
<php>
<!-- HERE -->
    <env name="APP_ENV" value="testing"/>
    <env name="CACHE_DRIVER" value="array"/>
    <env name="SESSION_DRIVER" value="array"/>
    <env name="QUEUE_DRIVER" value="sync"/>
</php>

Тогда вы можете использовать любую логику с if(env('APP_ENV') == 'testing')

...