我有一个API方法,该方法通过单击表单中的按钮来调用,并且在该API方法中,使用耗子向另一个项目的另一个API请求。很好。
我的问题是我正在做behat测试,我想测试我的API方法,但是我需要模拟对外部API的请求(因为我不需要测试它)。 Laravel有什么方法可以检测到我是否处于测试环境中并模拟请求,以及我是否处于正常环境中而不进行模拟?
答案 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')
使用任何喜欢的逻辑