在 nelmio-alice 中通过引用获取 fixture item

Take fixture item by reference in nelmio-alice

我有一组固定装置(这里是一个简化):

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 的引用?

您可以直接从加载程序中获取从 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());