我不知道标题是否阐明了我想做什么以及这种方式是否有效。但是,我想知道这是否是最佳实践——带数据库的 Phpunit。
我Aura\Sql
用来管理与 MySql 数据库的连接。好吧,在我的 PHPUnit 测试类中,我创建了一个初始模拟方法,请参见示例:
// Here a class construct.
$pdoMock = m::mock('Aura\Sql\ExtendedPdo');
$pdoMock->shouldReceive('fetchPairs')->andReturn([
'foo' => 'bar'
]);
$this->pdoConnection = m::mock('Aura\Sql\ConnectionLocator');
$this->pdoConnection->shouldReceive('getDefault')->andReturn($pdoMock);
接下来是接收测试的方法 PHPUunit 的示例。该类LoadUsers
调用Aura\SQl
上面声明的名称为“getDefault”的方法默认值。
$gateway = new LoadUsers($this->pdoConnection);
$gateway->readPairs(); // Returned array ['foo' => 'bar']
很容易看出,我从来没有真正连接到数据库。也许,另一种方法是与数据库建立真正的连接并忽略模拟。
我的大问题是是否建议测试以这种方式调用数据库连接的方法。
我想听(读)意见。谢谢