У меня есть набор тестов, и я хочу проверить, что мои классы генерируют исключения в нужное время. В примере, мой класс использует метод магического __get(), так что мне нужно, чтобы проверить, что исключение, когда недопустимое свойство извлекается:PHPUnit не ловит ожидаемых исключений
function testExceptionThrownWhenGettingInvalidProperty() {
$obj = new MyClass();
$this->setExpectedException("Property qwerty does not exist");
$qwerty = $obj->qwerty;
}
Класс выдает ошибку, как и должно быть, но вместо того, просто получая пропуск, исключение не поймано!
There was 1 error:
1) QueryTest::testExceptionThrownWhenGettingInvalidProperty
Exception: Property qwerty does not exist
я перед использованием SimpleTest и $this->expectException(new Exception("Property qwerty does not exist"));
работал просто отлично. Я знаю, что есть другие методы (@expectedException и try-catch), но этот должен работать, и он выглядит намного чище. Любые идеи, как я могу сделать эту работу?
Спасибо! Я полностью забыл об этом, потому что я привык к способу SimpleTest. Знаете ли вы, есть ли простой способ проверить текст? –
@Nathan, @ircmaxell: см. Мой ответ, есть лучший способ сделать это, включая тестирование текста. – ryeguy
@ircmaxell: Я не согласен с тем, что сообщение не имеет значения. Вы не видите хорошо разработанных языков или фреймворков, которые создают новое исключение для каждой новой ошибки, которая появляется. Это будет слишком много работы. – ryeguy