【问题标题】:Take fixture item by reference in nelmio-alice在 nelmio-alice 中通过引用获取夹具项目
【发布时间】:2019-08-13 08:58:22
【问题描述】:

我有一套固定装置(这里是简化的):

My\Entity\User:
  user_{1..10}:
    name: <firstName()>

My\Entity\Item:
  item_{1..10}:
    user: '@user_$current'
    data: <numberBetween(111111111, 999999999)>

我想在我的 phpunit 功能测试中获取 ID 为 4Item

我不能确定自动增量 ID 是从 1 开始的。TRUNCATE 之后不是 1。所以这是不正确的

$item4 = $this->em->getRepository(Item::class)->find(4);

如何获得对item_4 的引用?

【问题讨论】:

  • 我不知道一个优雅的解决方案,那么重新映射键呢?
  • 您可以添加加载固定装置的代码部分吗?加载夹具文件的加载器将返回一个包含所有实体的数组。从此数组中,您可以获取实体,而不是通过实体管理器获取它。如果你想确定,你可以找到它,你可以使用这个实体的 id 传递给find()

标签: symfony doctrine-orm doctrine nelmio-alice alice-fixtures


【解决方案1】:

您可以直接从加载器中获取从fixtures文件生成的实体:

$loader = new Nelmio\Alice\Loader\NativeLoader();
$objectSet = $loader->loadFile(__DIR__.'/fixtures.yml');

$objectSet 应包含您所有的实体的别名,因此您可以获取特定项目并直接使用它或使用您的存储库再次获取它

$fixtureItem4 = $objectSet['item_4'];
$persistedItem4 = $this->em->getRepository(Item::class)->find($fixtureItem4->getId());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多