PHPUnit İstisna test, hata mesajı sonuçlar çıktı işler karışıyor

2 Cevap php

Ben bu doğru yapmak için görünmüyor olabilir, istisna hata mesajı sadece okumak için komut satırı penceresi zor hale yazdırır. Aşağıda benim kodu nasıl yapılandığını ve test kodu.

public function availableFruits($fruit)
{
  switch($fruit) {
    case 'foo':
    // all good
    break;

    case 'bar':
    // all good
    break;

    default:
    throw new Exception($fruit.' not available!');
    break;

  }
}

public function chooseFruit($fruit)
{
  try {
    availableFruits($fruit);
  } catch (Exception $e) {
    echo $e->getMessage();
  }
}

public function testAvailableFruits()
{
  $this->setExpectedException('Exception');

  chooseFruit('Kiwi');
}

Hata mesajı aşağıdaki gibi komut satırı penceresinde yazdıracaktır. Ben phpunit.de ama aynı sonuçlarında gösterilen tüm yöntemleri denedim.

..Error on line 13 in c:\file\path\fruits.php: Kiwi not available!.F

Hata satırı nasıl ben hiç doğru yapıyorum ki bastırmak yok, yazdırır?

2 Cevap

Bunu yapmak için sadece yol bulundu gibi bu utanç verici. Teşekkürler Chris, ama ben bu kadar iyi çalıştı.

Ben yanlış bir yöntem test, chooseFruit istisna atar yöntem değildir, bu nedenle özel durum hata yazdırır:

public function testAvailableFruits()
{
  $this->setExpectedException('Exception');
  **chooseFruit('Kiwi');**
}

O hiç yankılandı olmadığı durum, hata mesajı kapatmak olacak atar gerçek yöntemi test:

public function testAvailableFruits()
{
  $this->setExpectedException('Exception');
  **availableFruits('Papaya')**
}

Ben bunu yapmak için başka bir yolu gibi görünüyor test yöntemine a comment blok eklemek için olduğuna inanıyorum ...

/**
 * @expectedException ExpectedExceptionName
 */

Veya, aynı zamanda kendi kendine Eğer catch bloğu içinde olsun yoksa yöntem başarısız olmasına neden istisnayı da yakalayabilir.