Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 用于设备生成的自定义代理实体_Symfony_Testing_Doctrine Orm - Fatal编程技术网

Symfony 用于设备生成的自定义代理实体

Symfony 用于设备生成的自定义代理实体,symfony,testing,doctrine-orm,Symfony,Testing,Doctrine Orm,因此,我的问题非常具体,但即使经过几个月的思考,我也不知道如何做到这一点。下面的主题将是关于Symfony、条令和在测试过程中生成夹具 我想在测试过程中生成固定装置。我们的目标是使用助手为每个测试提供一组非常特定的装置,而不牺牲可读性。这就是我的目标,所以我的想法是创建一个tests/Resources/EntityProxy,它是src/Entity文件夹的镜像,包含相同数量的同名类。每个EntityProxy都从其相关的实体扩展而来,使用自定义特征轻松填充属性 您猜对了,我只想在测试中使用E

因此,我的问题非常具体,但即使经过几个月的思考,我也不知道如何做到这一点。下面的主题将是关于Symfony、条令和在测试过程中生成夹具

我想在测试过程中生成固定装置。我们的目标是使用助手为每个测试提供一组非常特定的装置,而不牺牲可读性。这就是我的目标,所以我的想法是创建一个
tests/Resources/EntityProxy
,它是
src/Entity
文件夹的镜像,包含相同数量的同名类。每个
EntityProxy
都从其相关的
实体扩展而来,使用自定义特征轻松填充属性

您猜对了,我只想在测试中使用
EntityProxy
,并将其直接用于测试函数。这其中有一个主要问题,因为条令不承认
实体代理
是一个实体,即使它是从真实的
实体
延伸而来

有没有一种方法可以说是将
实体代理
作为其扩展的
实体

__

下面的代码是我想要的en
EntityProxy
示例:

namespace Tests\Resources\EntityProxy;
类用户扩展App\Entity\User
{
使用固定世代特征;
公共函数static makeDefault():self
{
返回静态::生成([
'username'=>self::getFaker()->username,
'email'=>self::getFaker()->email,
...
]);
}
公共函数静态生成(数组$data=[]):self
{
$entity=static::makeDefault();
$entity=static::setValues($entity$data);
返回$entity;
}
}

并可用于以下测试:
User::make(['name'=>'johnwick'])

您确定要这样使用它吗?为什么不通过反射来填充你的实体的领域呢?因为它失去了一些清晰性。我们测试的一个大问题是夹具的生成。如果我们有一个在每次测试中重置的公共数据库,那么添加一个fixture可能会导致其他测试失败。仅为每个测试添加所需的夹具似乎是最好的方法,但这会产生大量冗余,因此测试可读性较差。我想通过提供代理中的“生成”方法和“编辑”方法来改进fixture的生成,这些方法可以用作实际的实体。看一下-这看起来像你要找的,只是它跳过了代理部分这真是一个很酷的包,我完全忘记了它的存在,我也会将它集成到我的包中,谢谢@NicoHaase:)!尽管如此,我还是打开了问题的大门,因为我真的很想为非常特定的领域内容尝试这个实现