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