I am testing a method involves execution of mysql query. I am using PDO mock (i created with jimbojsb/pseudo) and i wonder if there is a way for me to know which query executed in practice. this is my test:
public function testSave_idIsInitialized()
{
$data = array('site' => 'Ad_1', 'placement' => 'great ad', 'device' => 'mobile', 'source' => 'origin',
'campaign' => 'revCont','url' => 'http://walletgroove.com', 'country' => 'Israel', 'active' => '1', );
$lastId = 10;
$query = "UPDATE rules SET site=:site, placement=:placement, device=:device, ";
$query .= " source=:source, campaign=:campaign, url=:url, country=:country, dof_count=:dof_count, dof_idx=:dof_idx, active=:active ";
$query .= " WHERE id=:id";
$pdo = new Pseudo\Pdo();
$r = new Pseudo\Result();
$pdo->mock($query, $r);
$fixture = new AdRule($data);
$fixture->id = 1;
$fixture->setDbh($pdo);
$fixture->save();
}
and this is the method i am testing:
function save() {
$DBH = $this->getDbh();
if (empty($this->id)) {
//insert new
$query = "INSERT INTO rules (site, placement, device, source, campaign, url, country, dof_count, dof_idx, active)";
$query .= " VALUES (:site, :placement, :device, :source, :campaign, :url, :country, :dof_count, :dof_idx, :active)";
$arr = $this->toArray();
unset($arr['id']);
$stmt = $DBH->prepare($query);
$stmt->execute($arr);
$this->id = $DBH->lastInsertId();
} else {
//update
$query = "UPDATE rules SET site=:site, placement=:placement, device=:device, ";
$query .= " source=:source, campaign=:campaign, url=:url, country=:country, dof_count=:dof_count, dof_idx=:dof_idx, active=:active ";
$query .= " WHERE id=:id";
$stmt = $DBH->prepare($query);
$stmt->execute($this->toArray());
}
}
is there a way to check which of the queries was called?
Aucun commentaire:
Enregistrer un commentaire