簡短問題:有沒有辦法在SimpleTest中重置Mock對象,刪除所有期望?SimpleTest模擬對象:清除期望
的更詳細的解釋:
我有我使用SimpleTest測試和時遇到一些問題,它使用的是模擬對象的類。
該類別爲Logger
,記錄器內部有多個Writer
對象(FileWriter
,EmailWriter
等)。調用Logger::log()
方法在幕後執行一些邏輯並將消息發送給正確的作者。編寫者被緩存在Logger類中以保存每次重新實例化每一個。
在我的單元測試中,我設置了一個Logger,創建並添加了一些Mock Writer對象,然後一直使用MockDBWriter->expectOnce()
等方法來測試Logger是否正在工作。
現在的問題是我想測試記錄器的另一個功能,但expectOnce
期望仍然有效,並導致我的後續測試失敗。
function testWritesMessageOK() {
$log = Logger::getInstance();
$mock = new MockFileWriter($this);
$log->addWriter($mock);
$mock->expectOnce("write", "Message");
$log->write("Message"); // OK
}
// this is just an example - the actual test is much less inane
function testNumberOfWrites() {
$log = Logger::getInstance();
$mock = $log->getWriter();
$mock->expectCallCount('write', 2);
$log->write("One"); // fail - it doesn't match "Message"
$log->write("Two");
}
有沒有辦法重置模擬對象,消除所有的期望?