Codeception';未定义的变量输出';当尝试运行单元测试时


Codeception 'Undefined variable output' when trying to run a unit test

当尝试运行一个简单的单元测试时,如下

// 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

Parser.php中有问题的行129如下:

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项目中,只有这个单元测试。我用composer安装了Codeception。

我创建了如下测试:

codecept generate:test unit Example

填写上述内容和

codecept run unit

Codeception版本:2.2.2

Php版本:5.6.21

好的,我找到了更多信息,即这里:

https://github.com/Codeception/Codeception/issues/3324

这似乎是版本"的一个非常新的问题;2.2.*";

可能的解决方案有:

禁用过梁

插入

settings:
    lint: false

进入codeception.yaml文件。

降级

由于验证是在2.2版中引入的,因此降级到最新版本(2.1.11)也应该根据开发人员的说法来解决这个问题。