Я пытаюсь проверить класс двумя способами. оба взаимодействуют с базой данных, и именно поэтому я пытаюсь работать с PDO mock object. Я не мог найти много документации о насмешливом объекте PDO и работе с ними, но после того, как после одного учебника, который выглядел довольно близко к тому, что мне нужно, у меня закончился PDO-макет, но я не понимаю, как его использовать.phpunit test с PDO mock
сделать вещь просто это мой класс с первым методом я хочу тест:
<?php
use Slim\Slim;
class AdProviders {
public $providers = null;
protected $db = null;
function __construct() {
}
function getDbh() {
if ($this->db === null){
$this->db = Slim::getInstance()->db;
}
return $this->db->getConnection();
}
}
и в соответствии со схемой БД это то, как я создал объект PDO:
<?php
require dirname(__FILE__).'/../../src/vendor/autoload.php';
class AdProvidersTest extends PHPUnit_Framework_TestCase
{
public function dataProvider()
{
return array (
array (1, '1st', 'desc_1', 11),
array (2, '2nd', 'desc_2', 22),
array (3, '3rd', 'desc_3', 33),
);
}
/**
* @dataProvider dataProvider
*/
public function testAdProviders($id, $name, $desc, $account_id)
{
$data = array (
array (
'id' => $id,
'name' => $name,
'description' => $desc,
'account_id' => $account_id
)
);
$stmt = $this->getMock('PDOStatement', array ('fetchAll'));
$stmt->expects($this->any())
->method('fetchAll')
->will($this->returnValue($data));
$pdo = $this->getMock('PDO', array('prepare'),
array('sqlite:dbname=:memory'),'PDOMock_' . uniqid(),true);
$pdo->expects($this->any())
->method('prepare')
->will($this->returnValue($stmt));
}
}
Теперь я действительно потерял, как я должен проверить метод getDbh()
... это правильный способ создания PDO mock для моего теста? , и если да, то как я могу использовать его для тестирования метода?
любого рода руководство будет высоко оценен ... ТНХ