测试看不到治具的数据

问题描述 投票:0回答:1

我有一个夹具来填写测试用户

namespace Tests\Fixture;

use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use App\Entity\User;

final class UserFixture extends Fixture
{
    public function load(ObjectManager $manager): void
    {
        $userNonAdmin = new User();
        $userNonAdmin->setUsername('uuuuusername');
        $userNonAdmin->setPassword('$2y$10$qk4meHxphpa4qXef6QHC4uNQN/rFsa.iKWdS/8yB.bER1tdkSR6nS'); // hashed 123456
        $userNonAdmin->setEmail('[email protected]');
        $userNonAdmin->setRoles(['ROLE_USER']);
        $manager->persist($userNonAdmin);

        $manager->flush();
    }
}

以及使用此夹具的测试

namespace Tests\Acceptance\User;

use Tests\Fixture\UserFixture;
use Tests\Support\AcceptanceTester;

final class UserAuthCest
{
    private const ENDPOINT = '/user/auth';

    public function _before(AcceptanceTester $I): void
    {
        $I->loadFixtures([UserFixture::class]);
    }

    public function positiveTest(AcceptanceTester $I): void
    {
        $data = [
            'username' => 'uuuuusername',
            'password' => '123456'
        ];

        $I->sendPost(self::ENDPOINT, $data);

        $response = $I->grabResponse();

        dd(json_decode($response, true));
    }
}

但结果,我得到了尚未找到用户的错误,尽管如果我在测试中获得 UserRepository 并尝试使用此用户名查找用户,那么它会找到实体

public function positiveTest(AcceptanceTester $I): void
{
    $data = [
        'username' => 'uuuuusername',
        'password' => '123456'
    ];

    $I->sendPost(self::ENDPOINT, $data);

    /** @var UserRepository $repository */
    $repository = $I->grabRepository(UserRepository::class);
    $user = $repository->findOneBy(['username' => 'uuuuusername']); // Entity exists
    
    $response = $I->grabResponse();

    dd(json_decode($response, true));
}

我做错了什么?

Symfony 版本:6.3

Codeception版本:5.1.0

symfony codeception
1个回答
0
投票

我发现了问题所在,我必须修复

tests/Acceptance.suite.yml
文件

actor: AcceptanceTester
modules:
    enabled:
        - Doctrine2:
            depends: Symfony
            cleanup: false // <-- replace true with false
© www.soinside.com 2019 - 2024. All rights reserved.