我正在使用phpUnit开发一些测试,并且在一系列测试中我需要传递一个授权情况。为此,我必须连接到数据库并获得一个无法模拟的实体。但是,如果我在setUp()中执行此操作,它将为我正在运行的每个测试连接一次数据库。
如何在数据库中连接并获取此Entity一次,然后在所有测试中使用它?
public function setUp()
{
$this->setApplicationConfig(include './config/application.config.php');
parent::setUp();
$serviceManager = $this->getApplicationServiceLocator();
$this->instituicao = $serviceManager->get('InstituicaoRepository')->getByUrl('uov');
}
变量$this->instituicao
必须来自数据库,因此,我只需要获取一次。但是setUp多次调用它。
我试过这样的事情:
private $instituicao;
public function getSharedInstituicao()
{
if($this->instituicao == null){
$serviceManager = $this->getApplicationServiceLocator();
$this->instituicao = $serviceManager->get('InstituicaoRepository')->getByUrl('uov');
}
return $this->instituicao;
}
并将其从setUp中删除并在需要时调用此函数,但它每次都为null并且每次都会进入数据库。
答案 0 :(得分:0)
也许共享fixtuere会有所帮助
https://phpunit.de/manual/current/en/fixtures.html#fixtures.sharing-fixture?试试setUpBeforeClass
和tearDownAfterClass