symfony2 phpunit:如果不期望状态代码,如何获取异常消息

时间:2015-04-15 15:12:11

标签: php symfony exception phpunit

使用我的symfony 2应用程序,我使用phpunit来测试每个控制器的操作响应的状态代码是否是预期的。

如果没有,我怎么能让phpunit显示异常附带的错误消息,或者最好是模拟探查器异常页面?

原因是我有一个动作在phpunit中返回500代码,但在我的浏览器中加载就好了。

我的代码:

/**
 * @dataProvider urlProvider
 * @param $url
 */
public function testPageIsSuccessful($url)
{
    $client = self::createClient(array(), array(
            'PHP_AUTH_USER' => 'superadmin',
            'PHP_AUTH_PW'   => '587010',
        ));
    $client->followRedirects();
    $client->request('GET', $url);
    var_dump($url);
    $this->assertEquals(200, $client->getResponse()->getStatusCode());
}

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用 xDebug 来调试代码。

  1. 从控制台运行export XDEBUG_CONFIG=1或在浏览器中启用xdebug Cookie
  2. 在IDE中启用xdebug侦听器。
  3. 在您要测试的测试方法或app.php或控制器操作上放置断点。
  4. 从控制台运行测试或在浏览器中重新加载页面
  5. 调试您的应用程序,直到您收到异常。
  6. 说明,如何设置xDebug位于http://xdebug.org/

    Ubuntu 中,您可以运行:

    sudo apt-get install php5-xdebug
    

答案 1 :(得分:1)

您可以使用以下代码在测试中获取呈现的HTML:

die($client->getResponse()->getContent());

您必须在失败的测试之前放置它,PHPUnit将显示HTML代码。这不方便,但它帮助了我很多次。

答案 2 :(得分:1)

更好的解决方案是检查测试日志文件,并检查grep是否为CRITICAL或EXCEPTION tail -f var/logs/test.log | grep exception