mockWebApplication([
'components' => [
'errorHandler' => [
'class' => 'yiiunit\framework\web\ErrorHandler',
'errorView' => '@yiiunit/data/views/errorHandler.php',
'exceptionView' => '@yiiunit/data/views/errorHandlerForAssetFiles.php',
],
],
]);
}
public function testCorrectResponseCodeInErrorView()
{
/** @var ErrorHandler $handler */
$handler = Yii::$app->getErrorHandler();
ob_start(); // suppress response output
$this->invokeMethod($handler, 'renderException', [new NotFoundHttpException('This message is displayed to end user')]);
ob_get_clean();
$out = Yii::$app->response->data;
$this->assertEquals('Code: 404
Message: This message is displayed to end user
Exception: yii\web\NotFoundHttpException', $out);
}
public function testClearAssetFilesInErrorView()
{
Yii::$app->getView()->registerJsFile('somefile.js');
/** @var ErrorHandler $handler */
$handler = Yii::$app->getErrorHandler();
ob_start(); // suppress response output
$this->invokeMethod($handler, 'renderException', [new \Exception('Some Exception')]);
ob_get_clean();
$out = Yii::$app->response->data;
$this->assertEquals('Exception View
', $out);
}
public function testRenderCallStackItem()
{
$handler = Yii::$app->getErrorHandler();
$handler->traceLine = '{html}';
$file = \yii\BaseYii::getAlias('@yii/web/Application.php');
$out = $handler->renderCallStackItem($file, 63, \yii\web\Application::className(), null, null, null);
$this->assertContains('', $out);
}
}
class ErrorHandler extends \yii\web\ErrorHandler
{
/**
* @return bool if simple HTML should be rendered
*/
protected function shouldRenderSimpleHtml()
{
return false;
}
}