使用PhpStorm在Homestead环境中调试PHPUnit测试

时间:2017-07-14 22:34:29

标签: php laravel phpunit phpstorm homestead

我在使用phpunit.xml文件运行PHPUnit测试时遇到问题。我配置了这样的远程PHP解释器:

Remote PHP interpreter configuration

这个配置允许我调试PHP Web应用程序。我有尝试调试PHPUnit脚本的问题。我这样配置:

PHPUnit configuration

通过这样的配置,我可以调试PHPUnit测试:

debugging PHPUnit test

问题是我的PHPUnit文件没有被读取而且我的环境变量没有被使用。结果我在测试中遇到了一些错误,比如CSRF令牌验证异常。

如何使用我的phpunit.xml文件?我可以看到我可以在PHPUnit配置中添加默认配置文件。我需要在那里指定我的项目目录,而不是phpunit.xml itself

我可以在PHPUnit' Command->handleArguments()函数中看到,只有两种方法可以加载这个文件。我可以指定phpunit.xml所在的目录,也可以不使用--no-configuration选项。

hendleArguments() function in Command class

不幸的是,当我将项目所在的目录指定为phpunit.xml的位置时,我失去了调试测试的能力。有趣的是,我仍然可以调试PHPUnit脚本(例如Command.php文件)。

我不想在IntelliJ(PhpStorm)中添加--no-configuration选项,但是当字段"默认配置文件"没有被选中。

如何在不失去调试测试能力的情况下加载phpunit.xml文件?

1 个答案:

答案 0 :(得分:1)

问题是测试是孤立运行的。当我们在PHPUnit配置中指定phpunit.xml文件或项目目录时,会考虑该文件。导致“分离”调试器的原因是孤立地运行测试。要解决问题,我们必须将属性processIsolation设置为false

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
     backupStaticAttributes="false"
     bootstrap="bootstrap/autoload.php"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnFailure="false">
...
</phpunit>