Кодовое обозначение "Неопределенный вывод переменной" при попытке запустить модульный тест
При попытке запустить простой модульный тест, следующим образом
// tests
public function testMe()
{
$this->assertEquals(1+1, 2);
}
Я получаю следующую ошибку:
PHP Notice: Undefined variable: output in phar://C:/bin/codecept.phar/src/Codeception/Lib/Parser.php on line 129
PHP Stack trace:
PHP 1. {main}() C:\bin\codecept.phar:0
PHP 2. require_once() C:\bin\codecept.phar:7
PHP 3. Codeception\Application->run() phar://C:/bin/codecept.phar/codecept:36
PHP 4. Symfony\Component\Console\Application->run() phar://C:/bin/codecept.phar/src/Codeception/Application.php:103
PHP 5. Symfony\Component\Console\Application->doRun() phar://C:/bin/codecept.phar/vendor/symfony/console/Application.php:117
PHP 6. Symfony\Component\Console\Application->doRunCommand() phar://C:/bin/codecept.phar/vendor/symfony/console/Application.php:186
PHP 7. Symfony\Component\Console\Command\Command->run() phar://C:/bin/codecept.phar/vendor/symfony/console/Application.php:815
PHP 8. Codeception\Command\Run->execute() phar://C:/bin/codecept.phar/vendor/symfony/console/Command/Command.php:256
PHP 9. Codeception\Command\Run->runSuites() phar://C:/bin/codecept.phar/src/Codeception/Command/Run.php:256
PHP 10. Codeception\Codecept->run() phar://C:/bin/codecept.phar/src/Codeception/Command/Run.php:329
Строка, о которой идет речь, 129 в Parser.php
является следующим:
public static function validate($file)
{
$config = Configuration::config();
if (empty($config['settings']['lint'])) { // lint disabled in config
return;
}
exec("php -l ".escapeshellarg($file)." 2>&1", $output, $code);
if ($code !== 0) {
throw new TestParseException($file, implode("\n", $output));
}
}
Линия 129 exec("php -l ".escapeshellarg($file)." 2>&1", $output, $code);
Я попытался погуглить вокруг, и не смог найти никого другого с этой проблемой. Это полностью "пустой" проект php, только с этим модульным тестом. Я установил Codeception с композитором.
Я создал тест следующим образом:
codecept generate:test unit Example
заполнены выше и
codecept run unit
Версия Codeception: 2.2.2
Версия php: 5.6.21
1 ответ
Хорошо, я нашел больше информации, а именно здесь:
https://github.com/Codeception/Codeception/issues/3324
Кажется, это очень новая проблема с версией "2.2.*"
Возможные решения:
Отключить линтинг
Вставить
settings:
lint: false
В codeception.yaml
файл.
упадок
Поскольку проверка введена в версии 2.2, переход на последнюю версию (2.1.11) также должен решить проблему в соответствии с разработчиками.