当我在Laravel框架上运行测试时,PHPUnit不起作用,我收到错误/usr/bin/php声明PHP_VERSION的值无效

我正在尝试使用命令 ./vendor/bin/phpunit --filter=testNoImportFile 运行我的测试文件 ImportCSVTest.php

但我得到了错误

/usr/bin/php declares an invalid value for PHP_VERSION.
This breaks fundamental functionality such as version_compare().
Please use a different PHP interpreter.

我的测试文件ImportCSVTest.php如下

<?php

namespace TestsFeature;

use IlluminateFoundationTestingRefreshDatabase;
use IlluminateHttpUploadedFile;
use TestsTestCase;

class ImportCSVTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testNoImportFile()
    {
        Storage::fake('products');

        $response = $this->json('POST', '/import', [
            'csv' => UploadedFile::fake()->create('emptyUpload', 0, null)
        ]);

        Storage::disk('products')->assertMissing('emptyUpload');
    }


}

我第一次遇到这样的错误,如何解决这个问题?

回答

PHPUnit 拒绝与 PHP 解释器一起运行,其中PHP_VERSION常量的值包含无效值,这是由于提供(二进制)PHP 发行版的供应商所做的修改。

7.3.24-(to be removed in future macOS)是这样一个无效的值。该-(to be removed in future macOS)后缀是由 Apple 添加的,Apple 是您使用的 PHP 解释器二进制文件的供应商。

这是一篇很好的文章,解释了背景。这是 PHPUnit 8.5.17 的 ChangeLog。这是 PHPUnit 9.5.6 的 ChangeLog。这些是 PHPUnit 的第一个版本,用于检查PHP_VERSION启动时的无效值。

TL;DR:不要使用 Apple 随 macOS 提供的 PHP 解释器。改用 Homebrew 或类似软件。


以上是当我在Laravel框架上运行测试时,PHPUnit不起作用,我收到错误/usr/bin/php声明PHP_VERSION的值无效的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>