【问题标题】:How do I step into my code (not the test code) using Codeception in PhpStorm?如何在 PhpStorm 中使用 Codeception 进入我的代码(不是测试代码)?
【发布时间】:2017-07-06 05:20:54
【问题描述】:

我正在使用 Codeception 运行一些单元测试。具体来说,我正在测试一个 API,其中一个测试步骤失败了。我知道它是哪一步,但不知道为什么,所以我想单步执行我的代码,因为它正在由单元测试执行。

我已经尝试设置“在 php 脚本中的第一行中断”,我已经调试了测试本身,我已经尝试写入控制台,但还有很多需要缩小的范围。有没有办法像我正常调试一样进入我的代码?

【问题讨论】:

  • 我对codeception不太熟悉,但它是模拟请求?当我使用其他东西调试我的 API 时,通常可以将 ?XDEBUG_SESSION_START=PHPSTORM 添加到查询字符串中,您可以尝试将其放入测试请求中。
  • 从我的单元测试中调用的方法是sendPOST(...),我可以向其中添加参数。我将添加该参数,看看会发生什么。如果没有,我可以在 Postman 中测试同样的东西,看看我是怎么做的。
  • 这就像一个魅力。请添加为答案,以便我将您标记为正确。
  • 嗯 ... xdebug.remote_autostart = 1 in php.ini 和 xdebug 将尝试调试每个请求(因为这个并不理想,但如果您不想编辑代码则很好)。如果编辑代码没问题——只需放置xdebug_break();——程序断点。 IDE 方面的唯一要求 - 1) 激活“电话句柄”图标(以便 IDE 侦听传入的调试请求)和 2) 如果您尝试一次调试多个请求(例如子请求),请确保您允许IDE 中超过 1 个(默认情况下)同时调试会话。
  • 我想知道是否可以设置程序断点。我是一名转换为 php 的 C# 开发人员,我认为 C# 理所当然的所有东西在 php 中通常不可用......很高兴这个不是。

标签: php unit-testing debugging phpstorm codeception


【解决方案1】:

在调试请求来自外部源(而不是从 PhpStorm 中启动进程)的 API 时,您始终可以将 ?XDEBUG_SESSION_START=PHPSTORM 添加到应该启动调试器的查询字符串中。

如果它不起作用,请将其设置为从脚本的第一行开始并逐步执行。如果它不适用于查询字符串,这通常是因为我没有设置正确的路径映射,您可以从“设置”>“服务器”中进行设置。

对于其他看到这个的人,正如@Brandon 在 cmets 中提到的那样,您首先应该确定的是您已安装并配置了 xdebug。

【讨论】:

  • 这里的另一个注意事项是确保您还安装和配置了 XDebug
  • 谢谢,为遇到同样问题的其他人补充了这一点。
猜你喜欢
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多