Tengo un conjunto de pruebas, y quiero probar que mis clases arrojen excepciones en el momento correcto. En el ejemplo, mi clase utiliza el método mágico __get(), por lo que necesita para probar que se produce una excepción cuando una propiedad no válida se recupera:PHPUnit no detecta excepciones esperadas
function testExceptionThrownWhenGettingInvalidProperty() {
$obj = new MyClass();
$this->setExpectedException("Property qwerty does not exist");
$qwerty = $obj->qwerty;
}
La clase genera un error como debe ser, pero en lugar de acaba de obtener un pase, la excepción no está atrapado!
There was 1 error:
1) QueryTest::testExceptionThrownWhenGettingInvalidProperty
Exception: Property qwerty does not exist
que estaba usando SimpleTest antes, y $this->expectException(new Exception("Property qwerty does not exist"));
funcionaba bien. Sé que hay otros métodos (@expectedException y try-catch), pero este debería funcionar y se ve mucho más limpio. ¿Alguna idea de cómo puedo hacer que esto funcione?
Gracias! Pasé por alto completamente eso porque estaba acostumbrado a la forma SimpleTest de hacerlo. ¿Sabes si hay una manera fácil de probar el texto? –
@ Nathan, @ircmaxell: Vea mi respuesta, hay una mejor manera de hacerlo, incluida la prueba de texto. – ryeguy
@ircmaxell: No estoy de acuerdo con el mensaje que no importa. No ve ningún lenguaje o marco bien diseñado que cree una nueva excepción por cada nuevo error que aparezca. Eso sería demasiado trabajo. – ryeguy