我有點新的phpunit,經過數小時的研究,我不是很找到辦法。我如何使用phpunit測試函數getResults。我如何測試多個查詢結果與phpunit
函數getResults和getResultsDetails屬於Result類。功能searchUser屬於User類。要獲得通行證登錄我能做到援引doLogin在登錄對象使用用戶名和密碼,它會留在$ _SESSION
class Result {
public function __construct()
{
if(!isset($_SESSION)){
session_start();
}
$this->loginObject = new Login();
}
public function getResults($fName, $lName)
{
$result = searchUser($fName, $lName);
while ($row = mysql_fetch_assoc($results)) {
$userIDs = $result['id'] . ',';
}
return
array(
'userIDs' => $userIDs,
'count' => getResultDetails($userIDs),
'results' => getResultDetails($userIDs, 0, 500),
)
}
如果限制和偏移量是傳中,然後返回結果,否則一切返回計數
public function getResultDetails($userIDs, $limit = null, $offset =null)
{
if(!$this->beforeFilter()) return "logout";
//open db connection
$sql = '';
if(!$limit && !$offset)
{
$sql .= 'SELECT count(*) ';
} else {
$sql .= 'SELECT a.info, b.info, d.info ';
}
$sql .= 'FROM a ';
$sql .= 'inner join b on blah blah';
$sql .= 'inner join d blah blah';
$sql .= "where d.userID in ($userIDs)";
if($limit && $offset)
$sql .= "LIMIT $limit, $offset";
return mysql_query($sql);
}
}
這是在firName和lastName上搜索用戶的基礎。 searchUser屬於用戶類別 類別患者公共職能__construct() 如果(!isset($ _ SESSION)){ session_start(); } $ this-> loginObject = new Login(); }
public function searchUser($fName, $lName)
{
if(!$this->beforeFilter()) return "logout";
// logic to do search user and return user result mysq_query($sql)
return userIDs;
}
}
您的評論真的很有幫助。我對原來的問題做了一些改變。但是當我做$ userObj = $ this-> getMock('Users',array('doLogin','searchUser')); $ userObj-> expect($ this-> once()) - >方法('doLogin') - > with('username','password');方法名稱的Expectation失敗等於調用1次時的。方法預計被稱爲1次,實際稱爲0次。 –
user332951
是的 - 因爲你指定doLogin應該被精確地調用一次($ this-> once() - 告訴你的模擬,這個方法應該不會少於,但正好一次) - 但你永遠不會調用它(至少我根據您發佈的代碼無法看到它)。 – Cyprian