Кто-нибудь знает, есть ли assert
или что-то подобное, которое может проверить, было ли создано исключение в тестируемом коде?
function yourfunction($a,$z){
if($a<$z){ throw new <YOUR_EXCEPTION>; }
}
вот тест
class FunctionTest extends \PHPUnit_Framework_TestCase{
public function testException(){
$this->setExpectedException(<YOUR_EXCEPTION>::class);
yourfunction(1,2);//add vars that cause the exception
}
}
PhpUnit является удивительной библиотекой, но этот отдельный момент немного печален. Поэтому мы можем пользоваться turbotesting-php библиотекой с открытым исходным кодом, которая имеет очень удобный метод утверждения для помощи нам тестирующий исключения. Это найдено здесь:
И использовать его, мы просто сделали бы следующее:
AssertUtils::throwsException(function(){
// Some code that must throw an exception here
}, '/expected error message/');
, Если код мы вводим в анонимной функции, не выдает исключение, исключение будет выдано.
, Если код мы вводим в анонимной функции, выдает исключение, но его сообщение не соответствует ожидаемому regexp, исключение будет также выдано.