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