2014-02-19 71 views
34

非常厚的问题,但是有什么方法可以在Codeception中将自己的调试消息打印到控制台?我的意思是什么都没有做断言,纯粹是为了调试测试本身的信息(例如,就像您var_dump()在任何普通的PHP网站的变量)在Codeception中将调试输出打印到控制台

我已经尝试var_dump()echoprint但无济于事。使用WebDebugmakeAResponseDump()不会产生所需的结果,我只是希望能够看到我的变量的内容,而无需运行调试器,如xdebug

回答

11

我似乎通过使用一个辅助类已经找到了解决这一问题的办法:

class WebHelper extends \Codeception\Module 
{ 
    public function seeMyVar($var){ 
     $this->debug($var); 
    } 
} 

,并调用类这样:

$foo = array('one','two'); 
$I->seeMyVar($foo); 

然后我得到调试输出我寻找

I see my var "lambda function" 
    Array 
    (
     [0] => one 
     [1] => two 
) 

我会接受这是一个临时的解决方案,但是我想保持我的断言干净并且不会将var_dumps混淆为已升级到测试函数,因此如果任何人有一个概念上正确的解决方案,请提交

+0

我开始觉得我是一个厚一点的没有看到一个明显的方式做到这一点。感谢您分享您的解决方案! –

+0

为什么不直接调用'var_dump','print_r'或'print'?它适用于'tryToTest'内的我 – pymarco

+0

由于上述两种方法都不能在我的测试中使用,可能现在有一个更新的版本,因为原来的文章使它适用于您? –

2

默认情况下Codeception说有错误,但没有详细显示它。但根据this blog post加入--debug详细显示错误。

codecept run --debug

40
\Codeception\Util\Debug::debug($this->em);die(); 

--debug标志运行Codeception。

+0

调试方法并不重要。你可以使用'var_dump()'。如果你运行** phpunit **测试,甚至** - 调试**是没有必要的。 – coviex

5

或者你可以使用冗长控制像命令:

codecept run -vvv 

每个v增加输出的详细程度(默认情况下很无语)。

36

见​​它说

您可以打印使用codecept_debug功能测试中的任何信息。

而且我用它在我的* CEPT类:当你与--debug运行(-v不显示它

codecept_debug($myVar); 

你调试输出仅仅是可见的,但-vv和-vvv做):

codecept run --debug 

和输出看起来像:

Validate MyEntity table insert (MyCept) 
Scenario: 
* I persist entity "AppBundle\Entity\MyEntity" 

    AppBundle\Entity\MyEntity Object 
    (
     [Id:AppBundle\Entity\MyEntity:private] => 1 
     [Description:AppBundle\Entity\MyEntity:private] => Description 
) 

PASSED 
0

短版将 codecept run tests/acceptance/SomeCest.php -d
-d会告诉你的步骤和调试

相关问题