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

Zub*_*r97 1 php testing macos phpunit

我正在尝试使用命令 ./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.
Run Code Online (Sandbox Code Playgroud)

我的测试文件ImportCSVTest.php如下

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Http\UploadedFile;
use Tests\TestCase;

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');
    }


}
Run Code Online (Sandbox Code Playgroud)

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

Seb*_*ann 7

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 或类似软件。