我有一个夹具来填写测试用户
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
我发现了问题所在,我必须修复
tests/Acceptance.suite.yml
文件
actor: AcceptanceTester
modules:
enabled:
- Doctrine2:
depends: Symfony
cleanup: false // <-- replace true with false