debugging 在phpUnit中转储变量会导致“Test was run in child process and ended unexpected”(测试在子进程中运行,意外结束)

guicsvcw  于 2023-10-24  发布在  PHP
关注(0)|答案(2)|浏览(111)

在写测试的时候,我曾经可以使用dump和die函数dd()来转储变量。但是在新的项目中,每当代码中有一个die的时候,它似乎会抛出“Test was run in child process and ended unexpectedly”,而不是显示转储的变量结果。
这使得开发/调试测试变得非常困难和缓慢。最近有其他人经历过这种情况吗?
我目前使用的是phpUnit 9.5.2版本,可以确认这在其他项目的同一版本中确实有效。
我也在PhpStorm的内置测试UI中运行这个程序,并运行Drupal9.2

6ie5vjzr

6ie5vjzr1#

首先,如果你想避免这个问题,使用var_dumpprint_r而不是dd
消息Test was run in child process and ended unexpectedly是由于测试进程死亡,正如dd函数(dump & die)所预期的那样。
我还高度怀疑您正在使用PHPUnit进程隔离。
至于为什么这个变量没有被打印出来,我也不知道。也许用一段代码来重现这个错误会有帮助。

  • 参考信息:* 我正在使用PHPUnit 10.3.2并为Laravel API 10.19.0版编写单元测试。
eoigrqb6

eoigrqb62#

正如Anas Tiour所说,如果你使用进程隔离,当你使用“die()”(它出现在dd()的场景后面)时,它可能会杀死你的“主”进程。
如果你不需要processIsolation,把它从你的phpunit.xml中删除,或者把它的值改为false(顺便说一句,默认值是false)

相关问题