,因爲我單元測試我的引導,現在(是的,我知道你最不這樣做),我同樣的問題在運行(包括頭()和session_start())。 我找到了解決辦法很簡單,在你的單元測試自舉定義一個常數,簡單地發送標題或啓動會話前檢查:
// phpunit_bootstrap.php
define('UNITTEST_RUNNING', true);
// bootstrap.php (application bootstrap)
defined('UNITTEST_RUNNING') || define('UNITTEST_RUNNING', false);
.....
if(UNITTEST_RUNNING===false){
session_start();
}
我同意這是不完美的設計,但我單元測試現有的應用程序,不需要重寫大部件。我也使用相同的邏輯來使用__call()和__set()魔術方法來測試私有方法。
public function __set($name, $value){
if(UNITTEST_RUNNING===true){
$name='_' . $name;
$this->$name=$value;
}
throw new Exception('__set() can only be used when unittesting!');
}
我剛剛遇到同樣的問題,但以下答案都沒有工作。你到底做了什麼?請發電子郵件給我。 – 2013-07-17 07:59:57