2013-08-01 72 views
3

我在寫一個WordPress主題。有一些後端類通過$ wpdb變量(「sql-connector.php」)與SQL數據庫進行通信。在WordPress主題中,某個頁面會包含此php頁面並創建一個db_connector對象,其中我可以立即使用global $wpdb

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; 
} 

}?> 

現在我想用PHPUnit的測試功能verify_account($em, $pwd)。我使用下面的代碼。

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); 
    } 


} 

?> 

運行PHPUnit,它只會給下面的結果:

MacBruce:model bruce$ phpunit sql-connectorTest.php 
PHPUnit 3.7.22 by Sebastian Bergmann. 

em = [email protected] = 5f4dcc3b5aa765d61d8327deb882cf99MacBruce:model bruce$ 

似乎它時,它希望使用$wpdb->get_var(...)功能卡。看來$wpdb是空的。

我對PHPUnit和WordPress很陌生。我是否想要包含任何WordPress/PHPUnit庫?或者我想念包括我自己的一些PHP文件?

謝謝。

回答

1

您需要與數據庫($ wpdb)的活動連接,使用所有憑證進行實例化,然後在您的測試中使用 。儘量避免使用全局變量,在構造函數或setter中傳遞它。

此外,你可能想看看一些準備去像http://wptest.io/