0

我不知道标题是否阐明了我想做什么以及这种方式是否有效。但是,我想知道这是否是最佳实践——带数据库的 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']

很容易看出,我从来没有真正连接到数据库。也许,另一种方法是与数据库建立真正的连接并忽略模拟。

我的大问题是是否建议测试以这种方式调用数据库连接的方法。

我想听(读)意见。谢谢

4

0 回答 0