Пример #1
0
 public function testProcessExceptionCatching()
 {
     CM_Config::get()->CM_Http_Response_Page->exceptionsToCatch = ['CM_Exception_InvalidParam' => ['errorPage' => 'CM_Page_Error_NotFound', 'log' => null]];
     $this->getMock('CM_Layout_Abstract', null, [], 'CM_Layout_Default');
     $request = CMTest_TH::createResponsePage('/example')->getRequest();
     /** @var CM_Http_Response_Page|\Mocka\AbstractClassTrait $response */
     $response = $this->mockObject('CM_Http_Response_Page', [$request, CMTest_TH::getServiceManager()]);
     $response->mockMethod('_renderPage')->set(function (CM_Page_Abstract $page) {
         if ($page instanceof CM_Page_Example) {
             throw new CM_Exception_InvalidParam();
         }
         return '<html>Error</html>';
     });
     $this->assertSame('/example', $response->getRequest()->getPath());
     $response->process();
     $this->assertSame('/error/not-found', $response->getRequest()->getPath());
 }
Пример #2
0
 public function testProcessExceptionCatching()
 {
     CM_Config::get()->CM_Http_Response_Page->exceptionsToCatch = ['CM_Exception_InvalidParam' => ['errorPage' => 'CM_Page_Error_NotFound', 'log' => null]];
     $this->getMock('CM_Layout_Abstract', null, [], 'CM_Layout_Default');
     $request = CMTest_TH::createResponsePage('/example')->getRequest();
     $response = $this->mockObject('CM_Http_Response_Page', [$request, CMTest_TH::getServiceManager()]);
     $response->mockMethod('_renderPage')->set(function () {
         static $counter = 0;
         if ($counter++ === 0) {
             // don't throw when rendering the error-page the request was redirected to
             throw new CM_Exception_InvalidParam();
         }
     });
     /** @var CM_Http_Response_Page $response */
     $this->assertSame('/example', $response->getRequest()->getPath());
     $response->process();
     $this->assertSame('/error/not-found', $response->getRequest()->getPath());
 }