Ich schreibe ein WordPress-Theme. Es gibt eine Backend-Klasse, die über die $wpdb-Variable (“sql-connector.php”) mit der SQL-Datenbank kommuniziert. Im WordPress-Theme würde eine Seite diese PHP-Seite enthalten und eine erstellen db_connector
Objekt, in dem ich gerade verwenden könnte global $wpdb
sofort.
sql-connector.php
:
<?php
class db_connector {
function verify_account($em, $pwd) {
global $wpdb;
echo "em = ". $em;
echo "pwd = ". $pwd;
$query =
"
SELECT id
FROM data_customers
WHERE email = %s AND password = %s
";
/* customer_id */
$result = $wpdb->get_var($wpdb->prepare($query, $em, $pwd));
echo "empty? = ".!empty($result);
return $result;
}
}?>
Jetzt möchte ich PHPUnit verwenden, um die Funktion zu testen verify_account($em, $pwd)
. Ich verwende den folgenden Code.
sql-connectorTest.php
:
<?php
include("sql-connector.php");
class db_connectorTest extends PHPUnit_Framework_TestCase{
private $db_connector;
function testVerify_account() {
$db_connector = new db_connector();
$result = $db_connector->verify_account("[email protected]", md5("password"));
$this->assertEmpty($result);
}
}
?>
Beim Ausführen von PHPUnit würde es nur die folgenden Ergebnisse liefern:
MacBruce:model bruce$ phpunit sql-connectorTest.php
PHPUnit 3.7.22 by Sebastian Bergmann.
em = [email protected] = 5f4dcc3b5aa765d61d8327deb882cf99MacBruce:model bruce$
Es scheint, dass es hängen geblieben ist, wenn es die verwenden möchte $wpdb->get_var(...)
Funktion. Es scheint, dass die $wpdb
ist leer.
Ich bin sehr neu bei PHPUnit und WordPress. Habe ich vergessen, irgendwelche WordPress/PHPUnit-Bibliotheken einzubinden? Oder habe ich es versäumt, einige meiner eigenen PHP-Dateien einzufügen?
Vielen Dank.