2011-04-19 15 views
8

Belirli bir yöntem create çağrıldığında bir istisna atar bir saplama kullanarak try/catch bloğunu test etmeye çalışıyorum. İyi çalışıyor, istisna kaldırıldı, ancak benim uygulama yerine onu yakalamak, testin yürütülmesini durdurur. Bunu yapmanın bazı daha iyi yolları nelerdir?PHPUnit stub istisnayı atar ancak yakalanmasına izin verilmez

<?php 
// TestCase 
     $mockDao->expects($this->once()) 
       ->method('create') 
       ->will($this->throwException(new \Exception)); 

     $service->addEntity($data); 
?> 


<?php 
// Service 
    public function addEntity($data) 
    { 
      .... 

     try { 
       ... 
      $this->create($entity); // Test Halts with Exception 
       ... 
     } catch (Exception $e) { 
      // Never Gets Called 
      $this->handleException($e); 
     } 
    } 

cevap

8

Sen \Exception atma ama Exception yakalıyoruz. addEntity() bir isim alanında uygulayan sınıf mı? \Exception'u yakalamak için sorunu çözüyor mu? Değilse, testi Exception atmak için değiştirmeyi deneyin.

+0

Vay. Evet kesinlikle haklısın, teşekkürler. Neler olduğunu görmek için 2 saat boyunca etrafta bir şeyler bulmalıyım. Bunu düşünmedim bile. – joeyadms

+1

Aynı sorun vardı, çünkü sınanan kod adlandırılmış ve Özel Durum bir ters eğik çizgi içermiyordu. –

İlgili konular