symfony2 phpunit:当不需要状态代码时如何获取异常消息

symfony2 phpunit : how to get exception message when status code is not expected one

在我的 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());
}

谢谢!

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

  1. 运行 export XDEBUG_CONFIG=1 从控制台或在浏览器中打开 xdebug cookie
  2. 在您的 IDE.
  3. 中打开 xdebug 侦听器
  4. 在您要调试的测试方法或app.php或控制器的操作上放置断点。
  5. 运行 您从控制台测试或在浏览器中重新加载页面
  6. 调试您的应用程序,直到出现异常。

关于如何设置 xDebug 的说明在 http://xdebug.org/

Ubuntu 你可以 运行:

sudo apt-get install php5-xdebug

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

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

您必须将其放在失败测试之前,PHPUnit 将显示 HTML 代码。虽然不方便,但帮了我很多次。

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