public function render($view, $file, $params)
 {
     $remainingCalls = self::CALL_LIMIT;
     if ($this->isPhp7 == false) {
         set_error_handler($this->errorToExceptionHandler());
         //convert errors to exceptions
     }
     while ($remainingCalls > 0) {
         try {
             $output = $view->renderPhpFile($file, $params);
             if ($this->isPhp7 == false) {
                 restore_error_handler();
                 //give control back to the default error handler
             }
             return $output;
         } catch (\Exception $ex) {
             ob_get_clean();
             //flush all accumulated junk from renderPhpFile
             $matches = [];
             if (preg_match(self::UNDEFINED_VARIABLE_PATTERN, $ex->getMessage(), $matches)) {
                 $variableName = $matches[1];
                 $params[$variableName] = FrontendMockBuilder::createMock();
             } else {
                 //This is a real exception that we can't handle. Rethrow
                 throw $ex;
             }
         }
         $remainingCalls -= 1;
     }
     throw new yii\base\Exception('FrontendRenderer::render reached max call limit');
 }
 public function tryToTestRawRenderWithDefaultMockValues(FunctionalNinja $I)
 {
     $I->amOnPage(['frontend/main/site/bla']);
     $mockMessage = FrontendMockBuilder::getMessage();
     $locatorH2 = sprintf('//h2[text()=%s]', Translator::getXpathLiteral($mockMessage));
     $locatorLi = sprintf('//li[text()=%s]', Translator::getXpathLiteral($mockMessage));
     $I->seeNumberOfElements($locatorH2, self::NUMBER_OF_VARS);
     $I->seeNumberOfElements($locatorLi, 2 * FrontendMockBuilder::getNumberOfIterations());
 }
 private function initMockParams($mockMessage, $numberOfIterations)
 {
     if ($mockMessage != null) {
         FrontendMockBuilder::setMessage($mockMessage);
     }
     if ($numberOfIterations != null) {
         FrontendMockBuilder::setNumberOfIterations($numberOfIterations);
     }
 }
 public function init()
 {
     FrontendMockBuilder::setMessage($this->mockMessage);
     FrontendMockBuilder::setNumberOfIterations($this->numberOfIterations);
     $this->setFrontendViewRenderer();
 }
 public function testCreateMockWithValidData_ExpectsNotNullResult()
 {
     FrontendMockBuilder::setMessage('Some message');
     FrontendMockBuilder::setNumberOfIterations(10);
     $this->assertNotNull(FrontendMockBuilder::createMock());
 }
 /**
  * Offset to retrieve
  *
  * @link http://php.net/manual/en/arrayaccess.offsetget.php
  *
  * @param mixed $offset <p>
  * The offset to retrieve.
  * </p>
  *
  * @return mixed Can return all value types.
  * @since 5.0.0
  */
 public function offsetGet($offset)
 {
     return FrontendMockBuilder::createMock();
 }
 protected function _before()
 {
     FrontendMockBuilder::setMessage(self::MESSAGE);
     FrontendMockBuilder::setNumberOfIterations(self::ITERATIONS);
     $this->mockModel = FrontendMockBuilder::createMock();
 }