首页 > 解决方案 > 如何正确设置 PhpStorm?Сan't run PHPUnit on Laravel 8 on Windows 10. 调用未定义函数 Tests\Unit\is_id_term()

问题描述

我已经全局安装了 PHPUnit 并设置了一个环境变量“path”,所以它通过命令运行phpunit.phar

我在“app”文件夹中创建了一个带有自定义函数的文件:

function is_id_term(string $q, &$id = null, string $name = 'id'): bool {
    ...
    ...
    ...
    ...
    ...
}

之后,我在 composer.json 文件的 autoload 部分添加了以下行:

"files": [
    "./app/functions.php"
]

然后我运行命令:

composer dump-autoload

tests/unit/然后在文件夹中创建单元测试:

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class IsIdTermTest extends TestCase
{
    public function testOne()
    {
        $res = is_id_term('id: 1');
        $this->assertTrue($res);
    }

    public function testString()
    {
        $res = is_id_term('id:lucas');
        $this->assertFalse($res);
    }
}

如果我使用 PhpStorm 右上角的绿色按钮运行这些测试,我会收到以下错误:

C:\localserver\php8.0.2\php.exe C:\Users\webgr\AppData\Roaming\Composer\vendor\laravel\installer\bin\phpunit.phar --no-configuration C:\Users\webgr\projects\my-blog\tests --teamcity --cache-result-file=C:\Users\webgr\projects\my-blog\.phpunit.result.cache
Testing started at 19:00 ...
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.


Error : Call to undefined function Tests\Unit\is_id_term()
 C:\Users\webgr\projects\my-blog\tests\Unit\IsIdTermTest.php:11

使用绿色按钮开始测试后,文件将出现在项目的根文件夹中 .phpunit.result.cache 包含此内容

C:37:"PHPUnit\Runner\DefaultTestResultCache":230:{a:2:{s:7:"defects";a:2:{s:32:"Tests\Unit\IsIdTermTest::testOne";i:4;s:35:"Tests\Unit\IsIdTermTest::testString";i:4;}s:5:"times";a:2:{s:32:"Tests\Unit\IsIdTermTest::testOne";d:0.004;s:35:"Tests\Unit\IsIdTermTest::testString";d:0;}}}

但是,如果我在终端中执行命令:

phpunit.phar

然后所有测试都通过而没有错误。

同样,如果我在其他文件中单击它的名称,PhpStorm 可以毫无问题地找到这个函数。

你能告诉我如何设置 PhpStorm 吗?我的错误是什么?

标签: laravelwindowsphpunitphpstorm

解决方案


重新安装项目后,一切正常,但我仍然不知道错误的原因是什么。我相信原因是我在全局安装 PHPUnit 并配置 XDebug 之前创建了项目。虽然我当然可能是错的。


推荐阅读