The short question: Is there a way to reset a Mock object in SimpleTest, removing all expectations?
The longer explanation:
Ben SimpleTest kullanarak test ediyorum bir sınıf var ve bunu kullanarak Mock nesneler ile bazı sorun yaşıyorum.
Sınıf Logger
, ve logger iç Writer
nesneler (FileWriter
, EmailWriter
, vb) bir dizi vardır. Logger::log()
yöntemini çağırarak sahneleri ve doğru yazar yollarının mesajı arkasında bazı mantık gerçekleştirir. Yazarlar yeniden başlatmasını her bir her zaman kazanmak için Logger sınıfta önbelleğe alınır.
Benim birim testlerde, ben, bir Logger kurmak oluşturmak ve bazı Mock Yazar nesneler eklemek ve ardından MockDBWriter->expectOnce()
Logger çalıştığını test etmek gibi yöntemler kullanıyoruz.
Sorun şimdi Logger'un başka işlevini test etmek istediğiniz olduğunu, ancak expectOnce
beklentilerinin halen yürürlükte olan ve benim sonraki testleri başarısız olmasına neden.
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");
}
Tüm beklentileri kaldırarak, bir Mock nesne sıfırlamak için bir yolu var mı?