在Symfony4中测试服务:找不到类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Symfony4中测试服务:找不到类相关的知识,希望对你有一定的参考价值。

我想使用phpunit bridge在Symfony 4中测试我的服务,但是当我启动测试时,我得到:

Error: Class 'AppServiceCompanyManager' not found

我的服务位于src / Service / CompanyManager.php

tests / Service / CompanyManagerTest.php:

namespace AppTestsService;

use AppServiceCompanyManager;
use PHPUnitFrameworkTestCase;
use AppEntityCompany;

class CompanyManagerTest extends TestCase
{
    public function testGetCompany()
    {
        $companyManager = new CompanyManager();
        $company = $companyManager->getCompany(2);
        $this->assertInstanceOf(Company::class,$company);
        $company = $companyManager->getCompany(1000);
        $this->assertNull($company);
    }
}

在config / services_test.yaml中,有这样的声明:

# If you need to access services in a test, create an alias
# and then fetch that alias from the container. As a convention,
# aliases are prefixed with test. For example:
#
# test.AppServiceMyService: '@AppServiceMyService'

所以我试着添加:

test.AppServiceCompanyManager: '@AppServiceCompanyManager'

但我仍然得到错误:

$ ./vendor/bin/simple-phpunit tests
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.

Testing tests
E                                                                   1 / 1 
(100%)

Time: 364 ms, Memory: 4.00MB

There was 1 error:

1) AppTestsServiceCompanyManagerTest::testGetCompany
Error: Class 'AppServiceCompanyManager' not found

C:...webvp20	estsServiceCompanyManagerTest.php:22

第22行是:

$companyManager = new CompanyManager();

任何的想法 ?

PS:听起来像某人有同样的问题:PHPUnit Error: Class not found

答案

我认为你应该扩展KernelTestCaseSymfonyBundleFrameworkBundleTestKernelTestCase)而不是TestCase

另一答案

作曲家列表中可能还没有新类。所以,...尝试运行

composer dump-autoload

我建议使用这个作曲家配置

{
    "autoload": {
        "psr-4": {
            "": ["src", "testS"]
        }
    }
}

一旦你在composer.json中定义了这个自动加载配置,并且在composer dump-autoloar之后你永远不会遇到自动加载问题

另一答案

我刚遇到这个问题。不知道为什么,但我的项目根目录中没有phpunit.xml.dist。没有一个例子显示这个,但是如果你添加bootstrap =然后包括自动加载。它应该开始找到你的课程。

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.0/phpunit.xsd"
     bootstrap="vendor/autoload.php"

>

以上是关于在Symfony4中测试服务:找不到类的主要内容,如果未能解决你的问题,请参考以下文章

在 Symfony 4.1 中使用 grpc,“找不到类 'Grpc\ChannelCredentials'。”

Symfony4“@ParamConverter 注释找不到对象”404 错误

Kotlin 在片段中找不到按钮 ID,为啥?

PHPUnit错误:找不到类

Kotlin:找不到符号类片段或其他 android 类

测试 Symfony 包:找不到教义.orm.entity