如果您在使用Laravel的测试环境中,默认情况下是否可以模拟API请求?

时间:2019-04-12 21:12:53

标签: laravel testing service mocking behat

我有一个API方法,该方法通过单击表单中的按钮来调用,并且在该API方法中,使用耗子向另一个项目的另一个API请求。很好。

我的问题是我正在做behat测试,我想测试我的API方法,但是我需要模拟对外部API的请求(因为我不需要测试它)。 Laravel有什么方法可以检测到我是否处于测试环境中并模拟请求,以及我是否处于正常环境中而不进行模拟?

1 个答案:

答案 0 :(得分:2)

您的项目中应该有一个名为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')使用任何喜欢的逻辑