Когда я тестирую конструктор, который выдает исключение, используя функциюExceptionMessage («сообщение об исключении»), проверка завершается неудачно, и фактический текст сообщения имеет префикс «Class» namespace \ Class_Name ».
В нем также говорится, что исключение типа Error было сгенерировано вместо типа Exception, как и ожидалось.
Неправильно ли я выкидываю свое исключение?
Я смог выполнить тест, пропустив функцию waitExceptionMessage и заключив код в оператор try catch.
Что не имеет смысла для меня.
Использование аннотаций
/**
* @expectedException Exception
* @expectedExceptionMessage no_file.json not found
*/
Также не решил проблему.
Тестовый код PHPUnit:
public function testNonExistingFileInConstructor() {
$this->expectException( 'Exception' );
$this->expectExceptionMessage( 'no_file.json not found');
new Json_File('no_file.json');
}
Код, выдавший исключение:
public function __construct( $path_to_file ) {
$json_file = file_get_contents( $path_to_file );
if( false === $json_file ) {
throw new Exception( $json_file . ' not found', 500 );
}
$data = json_decode( $json_file, true );
if ( is_null( $data) ) {
throw new Exception( 'invalid json in ' . $json_file, 600 );
}
$this->data = $data;
}