J'ai un ensemble de tests, et je veux tester que mes classes jettent des exceptions au bon moment. Dans l'exemple, ma classe utilise la méthode magique __get(), donc je dois tester qu'une exception est levée lorsqu'une propriété non valide est récupéré:PHPUnit n'attrape pas les exceptions attendues
function testExceptionThrownWhenGettingInvalidProperty() {
$obj = new MyClass();
$this->setExpectedException("Property qwerty does not exist");
$qwerty = $obj->qwerty;
}
La classe renvoie une erreur comme il se doit, mais au lieu de juste obtenir un laissez-passer, l'exception n'est pas attrapée!
There was 1 error:
1) QueryTest::testExceptionThrownWhenGettingInvalidProperty
Exception: Property qwerty does not exist
j'utilisais SimpleTest avant et $this->expectException(new Exception("Property qwerty does not exist"));
travaillé très bien. Je sais qu'il existe d'autres méthodes (@expectedException et try-catch), mais celle-ci devrait fonctionner et elle semble beaucoup plus propre. Des idées comment je peux faire ce travail?
Merci! J'ai complètement oublié cela parce que j'étais habitué à la façon SimpleTest de le faire. Savez-vous s'il existe un moyen facile de tester le texte? –
@Nathan, @ircmaxell: Voir ma réponse, il y a une meilleure façon de le faire, y compris le test du texte. – ryeguy
@ircmaxell: Je ne suis pas d'accord avec le message, peu importe. Vous ne voyez pas de langages ou de frameworks bien conçus qui créent une nouvelle exception pour chaque nouvelle erreur apparaissant. Ce serait juste trop de travail. – ryeguy