我正在用几个类的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
答案 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');
}