我正在尝试调试Behat 3中的功能以查看发生了什么。
回声陈述似乎不起作用 - 我没有输出。
目前尝试使用的步骤如下:
/**
* @Then /^echo last request$/
*/
public function echoLastRequest()
{
echo ($this->_history->getLastRequest());
echo 'test';
}
答案 0 :(得分:7)
答案 1 :(得分:6)
AFAIK你不能。您可以使用常规调试。在最新的PhpStorm EAP Behat中提供了调试支持,尽管仍然存在问题。您可以在Mink打开任何页面之前传递Xdebug cookie来自己启动Xdebug。这应该添加到上下文中。
/**
* @beforeStep
*
* @param BeforeStepScope $scope
*/
public function synchroniseClientSession(BeforeStepScope $scope)
{
$driver = $this->getSession()->getDriver();
// Cookies must be set on the domain we're testing, Chrome opens with 'data:,' in the url.
if ($driver instanceof Selenium2Driver && $driver->getCurrentUrl() === 'data:,') {
$driver->visit($this->getMinkParameter('base_url'));
}
$driver->setCookie('XDEBUG_SESSION', 'PHPSTORM');
}
默认Behat配置还必须使用idekey
接收环境变量,以防您测试原始代码:
XDEBUG_CONFIG = “idekey = PHPSTORM”
答案 2 :(得分:3)
问题是Behat使用输出缓冲。您可以通过手动刷新输出缓冲区来解决它,然后Behat可以拦截它们:
var_dump('test');
ob_flush();
答案 3 :(得分:1)
如果你想调试实际的Behat代码,这个方法总是对我有用。
当PHP Storm / IntelliJ Idea不喜欢我的Behat版本时,我必须使用这样的东西:
behat
档案注意:我指定@wip标签来运行标记为wip的测试(我目前正在处理)。
答案 4 :(得分:0)
由于某些未知原因,我希望尽快锻炼,我无法使用我当前的设置(vim + vdebug + xdebug)进行调试。
与此同时,这个小技巧帮助了我:
passthru("echo \"foo\"");