如何在phpunit的功能测试中使symfony显示异常

时间:2018-03-24 19:56:14

标签: symfony phpunit

当我在控制台中使用PhpUnit运行单元测试时,所有异常都会立即显示在那里。但是,当我转向功能测试时,我看不到发生的异常。

首先我按照here的说法尝试了symfony WebTestCase。所以我用所需的参数调用$client,我有一个回复。但是我需要时间来理解这种行为就像我手动打开我想要测试的页面一样。来自$client->request的回复包含文本(html)。是错误显示在那里,但有很多HTML,很难找到异常。是的,我可以使用$crawler->filter('.text-exception')->first()->text(),但我希望能在单元测试中看到异常。当我测试命令时,PhpUnit和正常显示异常。

我尝试将代码从web/app_dev.php复制到测试用例。但它是一样的。我只有HTML回复。

那么我怎样才能使PhpUnit在单元测试中的功能测试中显示异常?

1 个答案:

答案 0 :(得分:2)

您可以使用分析器来执行此操作:

$client->enableProfiler();
$client->request('GET', '/');
$profile = $client->getProfile();
$exceptionProfile = $profile->getCollector('exception');

if ($exceptionProfile->hasException()) {
    $message = sprintf(
        "No exception was expected but got '%s' with message '%s'. Trace:\n%s",
        get_class($exceptionProfile->getException()),
        $exceptionProfile->getMessage(),
        $exceptionProfile->getException()->getTraceAsString()
    );
    throw new AssertionFailedError($message);
}