在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
答案
我认为你应该扩展KernelTestCase
(SymfonyBundleFrameworkBundleTestKernelTestCase
)而不是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'。”