我有一個類似的功能: 單元測試含日期時間(「現在」)的功能
public function getSomeInfo($id){
$date_start=new DateTime();
$day_of_week=$date_start->format("N");
$date_start=$date_start->sub(new DateInterval("P".$day_of_week."D"));
$date_end=new $date_start;
$date_end=$date_end->add(new DateInterval("P5D"));
$date_start=$date_start->format("Y-m-d");
$date_end=$date_end->format("Y-m-d");
$sql="SELECT * FROM `table`
WHERE `table`.`id`=$id
AND `session`.`date`>'$date_start'
AND `session`.`date`<='$date_end'";
$this->db->query($sql);
}
它返回這個當前星期的數據集,基本上選擇從表中的記錄與去年之間的日期週一和本週日。
我想能夠單元測試,但我不知道如何做到這一點,當它啓動一個DateTime構造函數。這將是當前的一週,但實際上爲了測試的目的,我只想要測試數據集中的一週數據,所以我真的希望測試日期時間每次都是相同的日期。
基本上我怎麼能設置DateTime(「現在」)每次相同的模擬日期。我使用PHP,Codeigniter和PHPUnit/CIUnit(隱含在標籤中)。
啊謝謝,一個例子勝過千言萬語! 這也給我的優勢是能夠使用相同的功能在其他幾周以及:) – EdL