Ho una serie di test e voglio verificare che le mie classi generino eccezioni al momento giusto. Nell'esempio, la mia classe utilizza il metodo magico __get(), quindi ho bisogno di testare che viene generata un'eccezione quando una proprietà non valida viene recuperata:PHPUnit non rileva le eccezioni previste
function testExceptionThrownWhenGettingInvalidProperty() {
$obj = new MyClass();
$this->setExpectedException("Property qwerty does not exist");
$qwerty = $obj->qwerty;
}
La classe genera un errore come dovrebbe, ma invece di solo ottenendo un passaggio, l'eccezione non viene catturata!
There was 1 error:
1) QueryTest::testExceptionThrownWhenGettingInvalidProperty
Exception: Property qwerty does not exist
usavo SimpleTest prima, e $this->expectException(new Exception("Property qwerty does not exist"));
funzionato bene. So che ci sono altri metodi (@ unexpectedException e try-catch), ma questo dovrebbe funzionare e sembra molto più pulito. Qualche idea su come posso farlo funzionare?
Grazie! L'ho completamente trascurato perché ero abituato al modo SimpleTest di farlo. Sai se esiste un modo semplice per testare il testo? –
@Nathan, @ircmaxell: vedere la mia risposta, c'è un modo migliore per farlo, incluso il test per il testo. – ryeguy
@ircmaxell: non sono d'accordo con il messaggio, non importa. Non vedi linguaggi o framework ben progettati che creano una nuova eccezione per ogni nuovo errore che si apre. Sarebbe solo troppo lavoro. – ryeguy