在PHPUnit中多次使用变量而不必再次获取它

时间:2018-03-20 18:29:31

标签: php phpunit global-variables

我正在使用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并且每次都会进入数据库。

1 个答案:

答案 0 :(得分:0)

也许共享fixtuere会有所帮助 https://phpunit.de/manual/current/en/fixtures.html#fixtures.sharing-fixture?试试setUpBeforeClasstearDownAfterClass