在 PHPUnit 中多次使用变量,而无需再次获取它



我正在使用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?尝试setUpBeforeClasstearDownAfterClass

相关内容

  • 没有找到相关文章

最新更新