我正在构建一个Api平台应用程序,其中用户实体很可能没有电子邮件,用户名或任何其他可读的身份。 这就是为什么我决定使用UUID类型的字段作为用户名( User::getUsername() )的原因。 我安装了ramsey/uuid-doctrine软件包,并将UUID Doctrine数据类型同时应用于id属性和uuid 删除了User::setUsername()方法,因为在创建新的User实例时,仅必须分配一次即可。 现在,通过API创建新用户既可以在Swagger UI中使用,也可以与REST客户端手动一起使用。 但是,当我尝试运行最简单的Codeception cest时,执行$ I-> haveInRepository会引发

1) UserCest: Test creating user
 Test  tests/functional/UserCest.php:createUser

  [Doctrine\Common\Persistence\Mapping\MappingException] The class 'Ramsey\Uuid\Uuid' was not found in the chain configured namespaces App\Entity


Scenario Steps:

 1. $I->haveInRepository("App\\Entity\\User") at tests/functional/UserCest.php:17

#1  /Users/erop/Developer/temp/uuid-test/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/MappingException.php:22
#2  /Users/erop/Developer/temp/uuid-test/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php:87
#3  /Users/erop/Developer/temp/uuid-test/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:151
#4  /Users/erop/Developer/temp/uuid-test/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:304
#5  /Users/erop/Developer/temp/uuid-test/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:78
#6  /Users/erop/Developer/temp/uuid-test/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:183
#7  /Users/erop/Developer/temp/uuid-test/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:283
#8  Codeception\Module\Doctrine2->haveInRepository
#9  /Users/erop/Developer/temp/uuid-test/tests/_support/_generated/FunctionalTesterActions.php:2792
#10 /Users/erop/Developer/temp/uuid-test/tests/functional/UserCest.php:17

不知道我应该在哪里和什么地方进行调整以使测试正常工作。 我在Internet上发现的东西主要与不同捆绑中实体的关系有关。 但正如您所看到的,情况并非如此。 任何想法如何解决该问题?

  ask by erop translate from so

本文未有回复,本站智能推荐:

3回复

Codeception & Symfony - 在测试前运行 Doctrine 迁移

我有一个 Symfony 4 应用程序和带有 Doctrine 迁移的 Doctrine。 我正在引入用于运行 API 测试的 Codeception,并且需要在测试运行之前运行迁移。 由于我使用的是Doctrine2 模块,因此我真的不想还包括DB 模块,因为测试不需要它,并且需要在两个不同的位置
2回复

未找到 Codeception/Symfony4 环境变量:“DATABASE_URL”

我在 Symfony4 中有一个带有学说 DB 的项目,一切都很顺利。 我想用 Codeception 添加一些功能和单元测试。 我按照文档并将其添加到我的functional.suite.yml 中: 但是,当运行vendor/bin/codecept run 时,我得到了一个丑陋的:
1回复

codeception:自Symfony 3.3起不再支持设置“doctrine”预定义服务,Symfony 4.0将不再支持

我的项目是一个带有Doctrine ORM的Symfony 3.3.9项目。 我使用代码库2.3.6与模块Doctrine2,我遵循这篇文章: http ://codeception.com/docs/modules/Doctrine2 我的代码配置是: 当我使用此命令运行测试套
1回复

Symfony2和FOSRestBundle:从MySQL获取打包在BINARY(16)字段中的UUID

我面临与UUID相关的怪异问题。 我已经使用Symfony2 + FOSRestBundle + JMSSerializer开发了REST API。 由于需要从两个来源更新某些表,因此我想到了将UUID用作一个实体的主键。 我做了一个doctrine:mapping:import来
1回复

Ramsey \\ UUID无法与Doctrine OneToOne关联一起使用

我正在为Symfony 3中的团队构建项目管理工具。我正在使用ramsey / uuid-doctrine作为系统中的ID。 到目前为止,这对一对多或多对一关联还不是问题,但是当我尝试保持一对一关联时,Doctrine并没有将关联实体转换为其UUID,并且而是在SQL中保留一个null值。
2回复

Codeception中的捆绑设置

我试图为我的Symfony2项目设置代码,该项目已经有4个工作包和他们的PHPUnit测试用例。 现在我想添加代码测试测试用例,特别是对于验收测试,但是当我“引导”代码时,我在主结构中找到了所有生成的代码。 由于我的应用程序已经捆绑在一起,我想保留这个概念以及我的测试用例。 特别是因为我的
1回复

Codeception在Symfony中不起作用

我正在尝试为我的Symfony 3应用程序创建验收测试,但无法正常工作。 它总是显示一个错误: AdminFamilyTestCest:测试我网站的admin \\ farm页面Test tests \\ acceptance \\ AdminFamilyTestCest.php:t
1回复

Codeception和Symfony 4:在UnitTest中获得服务

我正在尝试将Codeception与Symfony 4结合使用,但无法在测试(单元或功能)中获取服务 我已经在yml测试文件中启用了配置,我试图对服务进行gram处理,但没有任何效果。 有人可以告诉我我在做什么错吗? 如何使用Symfony服务容器在测试中获得服务? 我