php 有没有办法在功能测试中使用Foundry模型进行认证?

3htmauhk  于 2023-03-16  发布在  PHP
关注(0)|答案(2)|浏览(91)
1) App\Tests\Controller\Admin\Api\Promotion\PromotionDeleteControllerTest::test_deleting_promotion
LogicException: The first argument of "Symfony\Bundle\FrameworkBundle\KernelBrowser::loginUser" must be instance of "Symfony\Component\Security\Core\User\UserInterface", "Zenstruck\Foundry\Proxy" provided.

我正在使用phpunit库编写功能测试。我想创建管理对象以使用AdminFactory(扩展Foundry ModelFactory)进行测试,然后使用给定对象和内置的Symfony方法验证我的API请求

$this->client->loginUser($admin, 'admin');

我怎样才能让它工作呢?

g0czyy6m

g0czyy6m1#

好吧,我自己找到了解决办法。你得这样做:

AdminFactory::new()
    ->create([
        'email' => 'admin1@admin.com',
        'active' => true,
        'roles' => ['ROLE_SUPER_ADMIN'],
    ])
;

/** @var AdminRepository $adminRepository */
$adminRepository = static::getContainer()->get(AdminRepository::class);
$admin = $adminRepository->findOneBy(['email' => 'admin1@admin.com']);

这应该返回实体而不是Foundry代理

lfapxunr

lfapxunr2#

直接问实物:

$admin = AdminFactory::AdminFactory::new()
    ->create([
        /* $attributes */
    ])
    ->object(); // retrieves the actual object

请参阅ZenstrukFoundryBundle文档。

相关问题