1
我需要測試一個PHP Web應用程序。應用程序是一個程序代碼塊(在index.php中),由會話變量控制。通過控制流確定,其他文件也包含在程序塊中(xy.inc)並修改會話變量。例如: -
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: text/html; charset=utf-8");
session_name("some_name");
session_start();
$_SESSION['some_key'] = 'some_value';
if($_SESSION['key1'] == 1){
//include some file that in the end sets $_SESSION['key1'] = 0
}
else if($_SESSION['key2'] == 1){
//Do something
$_SESSION['key2'] = 0;
$_SESSION['keyX'] = 'someOtherControlValue';
}
//....Lots of code
$SESSION['whatever'] = 'justAnotherValue';
//..more code, more $_SESSION checks and so on
重構是沒有選擇(目前?),所以我只是想獲得至少一些基本的測試運行,而不與編碼器的「編程風格」的干擾。
在驗收測試中是否有訪問(和修改)$ _SESSION屬性的方法? 我想爲我的測試使用Codeception(但我打開替代方案)。
我要實現類似的信息(僞)
// setup test db etc.
get('/');
assert(title == 'the title');
// change some control values
$_SESSION['myDatabase'] = 'myTestdb';
$_SESSION['SomeKeyForFuctionIWantTest'] = 'myValue';
get('/');
assert($_SESSION['SomeKeyForFuctionIWantTest'] == 'myValue');
assert(getSomeElementCreatedByFunction() != null);
assert(somethingIsInTheDatabase);
我在PHP和會話管理(我在面向對象的編碼)一點經驗,任何人都可以幫我嗎?
側面說明:沒有框架,MVC或其他任何參與
你想改變中旬執行的會話數據或將裝上的session_start一組不同的()就足夠了?在第一種情況下:真的嗎?爲什麼?在後一種情況下:也許編寫和設置另一個[會話處理程序](http://docs.php.net/session_handler)將會起作用。 – VolkerK
@VolkerK: 我需要在讀取頁面後讀取和寫入會話值(所以PHP已經執行),如 1.讀取會話並修改var x 2.載入頁面'/',它使用var x並設置一些其他的變數 3.讀會話並修改變量 4.加載頁面'/'(...) 我必須知道頁面加載(會話狀態)之間的當前狀態 您能否給我關於如何將自定義SessionHandler集成到index.php中的最簡單示例?它只是在類中調用session_set_save_handler(),還是必須修改index.php才能真正使用類? – mrong