在不同的方法中使用pre创建的Slim环境

时间:2015-09-17 11:19:39

标签: php phpunit slim

我正在用几个类的phpunit编写一些测试。每个类都有以下方法:

  function getDbh() {
    if ($this->dbh === null){
      $this->dbh = Slim::getInstance()->db->getConnection();
    }
    return $this->dbh;
  }

但问题是,在第一次测试苗条后创建这个环境单例,我不知道我可以在下面的测试中使用。

为了让我的具体问题更加清晰,我的每个测试类都有这个方法:

public function testGetDbh_dbhIsNull()
{
    $fixture = new testedClass();

    $app = new Slim();
    $DB = $this->getMockBuilder('DB')
                 ->disableOriginalConstructor()
                 ->getMock();
    $DB->method('getConnection')->willReturn('connection');
    $app->db = $DB;

    $this->assertEquals($fixture->getDbh(), 'connection');
}

但是从第二次测试开始,测试由于以下错误而失败:

1) GroupTest::testSlim
Failed asserting that 'connection' matches expected null.

任何想法如何在每个测试中使用Slim单例? THX

1 个答案:

答案 0 :(得分:-1)

你的考试错了:)

public function testGetDbh_dbhIsNull()
{
    $fixture = new testedClass();

    $app = new Slim();
    $DB = $this->getMockBuilder('DB')
                 ->disableOriginalConstructor()
                 ->getMock();
    $DB->method('getConnection')->willReturn('connection');
    $app->db = $DB;

    //This points to the wrong object... This should fix it
    $this->assertEquals($app->db, 'connection');
}