Akdmeh
@Akdmeh
PHP, Yii2, Music

Поведение Codeception Functional с Yii2 — так и задумано?

Я столкнулся с прелюбопытнейшей особенностью Codeception в режиме functional.
Описать ее можно таким образом.
Первое: у нас есть простейший контроллер
class TestController extends Controller
{
public function actionIndex()
{
return $this->renderPartial('test');
}
}

Внутри шаблона test:
<?php
function test() { }


А теперь возвращаемся к functional testing.
Делаем простейшую проверку:
public function checkTest(\FunctionalTester $I)
{
        $I->amOnRoute('test/index');
        $I->amOnRoute('test/index');
        //На второй строчке скрипт упадет
}


Я почему-то считал, что скрипт делает запросы на сервер, а оказывается срабатывает своеобразный чит - фреймворк, по сути, делает внутренний вызов actionIndex() дважды подряд, будто бы эмулируя HTTP-вызов и если внутри шаблона существует какая-то функция - она вызовет ошибку, так как мы переопределяем ее во второй раз. То есть, в этом случае фреймворк не ведет себя как "рожден, чтобы умирать" каждый раз после вызова action, а будет несколько раз запускать разные action для ускорения процесса, и если в глобальной видимости определить функцию - она будет ложить проверки?

P. S. Оставим в стороне, что использовать функцию в шаблоне - быдлокод, это чисто пример более запутанного и хитрого хака. Я потратил на его выяснение часа 3, и это будет мне ценным уроком меньше делать грязного кода
  • Вопрос задан
  • 270 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы