Тестирование без переполнения стека ООП

Я хочу спросить, есть ли способ проверить процедурный код с модульным тестом или любым другим способом.

Например, у меня ниже очень простой код:

$a = 10;
$b = 20;

for($i = $a; $i < $b; $i++){
echo 'Loop ' . $i . PHP_EOL;
}

Я знаю, что я могу проверить с isset() и другие встроенные функции, если переменная существует, также может проверять тип переменной, с буферизацией вывода, я могу получить вывод и подсчитать, сколько раз цикл был выполнен,
но … могу я проверить, есть ли for петля не while цикл?

Я могу получить весь php файл и с помощью regex найти его, но, возможно, есть какая-то магическая функция, которая показывает мне это.

1

Решение

Для устаревшего файла, в котором отсутствует инкапсуляция, я бы рекомендовал протестировать его на максимально возможном уровне.

Можно ли проверить этот файл на уровне веб-сервера? Что будет функциональным тестом, а не модульным тестом? то есть:

  • запустите веб-сервер в начале вашего теста
  • сделать запрос к конечной точке, которая обслуживает файл, который вы разместили выше
  • утверждать содержание Loop ...\n ... как и ожидалось.

Простое утверждение на выходе, а не на реализации (какой цикл используется, какие переменные устанавливаются и т. Д.), Позволит вам легче реорганизовать код, сохраняя при этом защиту теста, гарантируя, что вывод как и ожидалось.

Если функциональный тест веб-сервера невозможен, вы можете создать модульный тест, который собирает выходные данные аналогичным образом:

ob_start();
include 'your_php_file_listed_above';
$out = ob_get_clean();

Тогда вы можете утверждать, что $ out содержит Loop .. \n ... правильно.

Я бы рекомендовал не указывать на конкретные детали реализации, то есть, какой цикл используется, какие переменные установлены, поскольку они могут замедлить рефакторинг.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]