如何使用echo调试Behat 3中的功能

时间:2014-08-20 09:49:43

标签: php debugging bdd behat

我正在尝试调试Behat 3中的功能以查看发生了什么。

回声陈述似乎不起作用 - 我没有输出。

目前尝试使用的步骤如下:

/**
 * @Then /^echo last request$/
 */

public function echoLastRequest() 
{
    echo ($this->_history->getLastRequest());
    echo 'test';
}

5 个答案:

答案 0 :(得分:7)

您可以使用简单的print_r()var_export()

var_export('DEBUG!!!');

Debug preview

答案 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”

enter image description here

答案 2 :(得分:3)

问题是Behat使用输出缓冲。您可以通过手动刷新输出缓冲区来解决它,然后Behat可以拦截它们:

var_dump('test');
ob_flush();

答案 3 :(得分:1)

如果你想调试实际的Behat代码,这个方法总是对我有用。

debugging Behat contexts

当PHP Storm / IntelliJ Idea不喜欢我的Behat版本时,我必须使用这样的东西:

  • 创建运行配置文件
  • 指向behat档案
  • 设置所需的Behat参数(配置文件,功能文件夹,标签)
  • 指定自定义目录(相对于所有这些路径)

注意:我指定@wip标签来运行标记为wip的测试(我目前正在处理)。

configuration profile

答案 4 :(得分:0)

由于某些未知原因,我希望尽快锻炼,我无法使用我当前的设置(vim + vdebug + xdebug)进行调试。

与此同时,这个小技巧帮助了我:

passthru("echo \"foo\"");