2011-07-01 20 views
6

Bir kullanıcı doğru post parametreleri olmadan/user/validate eriştiğinde, Zend uygulamasında bir zend istisnası atar. (Düzenim dahilinde çerçevelenen standart "Bir Hata Oluştu" mesajını alıyorum). Bu kasıtlı.PHPUnit ve Zend Framework ile sorun testi istisnaları

Şimdi bu davranışı PHPUnit ile denemeye çalışıyorum. Testi çalıştırdığınızda

/** 
* @expectedException Zend_Exception 
*/ 
public function testEmptyUserValidationParametersCauseException() { 
    $this->dispatch('/user/validate'); 
} 

Ben, "Beklenen istisna Zend_Exception" başarısız belirten bir mesaj alıyorum: İşte benim test. Herhangi bir fikir?

Sadece iyi çalışıyor dosyadaki diğer testler var ...

teşekkürler!

cevap

5

Zend_Controller_Plugin_ErrorHandler eklentisi Error_Controller artık mevcut için test ediyoruz istisna anlamına gelebilir 500 yönlendirme zorlar siz ve varsayılan için istisnalar işler. o geçerse aşağıdaki birim testi deneyin ve görün:

public function testUnknownUserRedirectsToErrorPage() 
{ 
    $this->dispatch('/user/validate'); 
    $this->assertController('error'); 
    $this->assertAction('error'); 
    $this->assertResponseCode('500'); 
} 

bu daha sonra çalışırsa o zaman bunu yönlendirme önce kodu içerdiği gibi artık olmayacaktır istisna görüntülemek hatası render olduğunu göstermektedir . Eksik ancak beklenen istisnaları teşhis etme önerileri için

+0

Teşekkürler tomjowitt! Bir tanesinde var! –

+0

Symfony'nin sfBrowser-> getCurrentException() 'sine benzer şekilde yakalanmamış istisnayı geri getirmenin bir yolu var mı? Doğru istisnanın atıldığını da doğrulamak yararlı olabilir. –

2

Belki de bir istisna atılmadığı için başarısız olur mu?

"@expectedException Zend_Exception" olmadan testi çalıştırmayı denediniz mi? Hiç bir istisna var mı?

+0

+1. Büyük ihtimalle notu kaldırdıktan sonra test geçtiğini görürsünüz. Hata denetleyicisinin diğer yanıtı doğrudur. –