我正在运行Symfony 5.4和PHPUnit 9.5。我有一个扩展Symfony\Bundle\FrameworkBundle\Test\WebTestCase
的测试。我在测试中创建了一个实体,然后执行测试中的代码。但是,在我的应用程序代码中,找不到该实体。我尝试直接在调用的应用程序代码中找到该实体,并使用dd()
将其转储出来(提前结束测试),但我总是得到null
。不知何故,我的测试使用了与应用程序代码不同的实体管理器。这就是我获取实体管理器的方式:
<?php
use Doctrine\ORM\EntityManager;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class MyTest extends WebTestCase {
protected EntityManager $entity_manager;
protected function setUp(): void {
$this->entity_manager = static::getContainer()->get('doctrine')->getManager();
}
public function testShouldCreateAnEntityThatIsVisibleInTheAppCode() {
$user = new User();
$user->setFirstName('Joe');
$user->setLastName('Bloggs');
$user->setEmail('joe.bloggs@example.com');
$this->entity_manager->persist($user);
$this->entity_manager->flush();
$crawler = static::$client->request('GET', 'https://localhost/admin/show-users');
$this->assertStringContainsString('joe.bloggs@example.com', $crawler->html());
}
}
如何让我的测试使用与被测代码相同的实体管理器?
1条答案
按热度按时间cngwdvgl1#
结果我只需要加上
转换为
setUp()
,如下所示: