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

Posted

技术标签:

【中文标题】如何正确设置 PhpStorm? Сan\'t run PHPUnit on Laravel 8 on Windows 10. 调用未定义函数 Tests\\Unit\\is_id_term()【英文标题】:How to set up PhpStorm correctly? Сan't run PHPUnit on Laravel 8 on Windows 10. Call to undefined function Tests\Unit\is_id_term()如何正确设置 PhpStorm? Сan't run PHPUnit on Laravel 8 on Windows 10. 调用未定义函数 Tests\Unit\is_id_term() 【发布时间】:2021-06-24 21:07:54 【问题描述】:

我已经全局安装了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 吗?我的错误是什么?

【问题讨论】:

@LazyOne 感谢指正 似乎您的自动加载不适用。你在 PhpStorm 中配置了吗?请查看设置 -> 语言和框架 -> PHP -> 测试框架。设置您的配置 (phpunit.xml) 并重试。 使用绿色按钮开始测试后,文件出现在项目的根文件夹 .phpunit.result.cache 中,内容为 C:37:"PHPUnit\Runner\DefaultTestResultCache":230: a:2:s:7:"缺陷";a:2:s:32:"Tests\Unit\IsIdTermTest::testOne";i:4;s:35:"Tests\Unit\IsIdTermTest::testString ";i:4;s:5:"次";a:2:s:32:"Tests\Unit\IsIdTermTest::testOne";d:0.004;s:35:"Tests\Unit\IsIdTermTest: :testString";d:0; 【参考方案1】:

尝试替换

use PHPUnit\Framework\TestCase;

use Tests\TestCase;

artisan make:test name --unit 命令似乎总是使用引用为 PHPUnit\Framework\TestCase 的 TestCase 生成模板

【讨论】:

在这种情况下,我收到以下错误:致命错误:未捕获的错误:找不到类“PHPUnit\TestCase” 使用 use PHPUnit\Framework\TestCase; 会引发错误。你试过use Tests\TestCase; 吗?【参考方案2】:

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

【讨论】:

我很确定问题与 Composer 有关,它没有更新新文件。

以上是关于如何正确设置 PhpStorm? Сan't run PHPUnit on Laravel 8 on Windows 10. 调用未定义函数 Tests\Unit\is_id_term()的主要内容,如果未能解决你的问题,请参考以下文章

如何在 phpstorm 中使用指南针?

PhpStorm - 如何正确输入提示数组键?

text PhpStorm的Клаиватурныесокращения

在声明 es2018 期间内联扩展运算符

ruby ПроверкавалидностиИННюрлицанаRuby(согласноhttp://www.egrul.ru/test_inn.html)

使用 HTML 表单,如何使用正确的 GET/POST 数据开始调试操作 PHP 脚本? (使用 PhpStorm 和 XAMPP)