Лучшее решение сделать произвольные утверждения на ожидаемое исключение?

Выполнение произвольных утверждений для сгенерированного исключения может быть полезно, когда оно обрабатывает другую информацию, кроме сообщения или кода.

Есть ли более простой, читаемый или более «рекомендуемый phpunit способ» сделать это, чем в следующем примере:

public function testTitleShouldNotAcceptArrayAsValue()
{
/* Arrange */
$schema = new sch\ObjectSchema();/* Expect */
$this->expectException(sch\Exception::class);try {
/* Act */
$schema->title = [];
} catch (sch\Exception $exception) {
/* Assert */
$this->assertEquals('title', $exception->getProperty());
$this->assertEquals(
[
'properties' => [
'title' => [
'type' => 'string'
]
]
],
$exception->getRules()
);
throw $exception;
}
}

0

Решение

Если вы помещаете дополнительную информацию в объект исключения и хотите в тесте доказать, что он устанавливается, я бы использовал команду try / catch, как у вас.

ИМО, expectException() и повторноthrow избыточно, хотя. В конце перехвата я просто возвращаюсь из функции с пропуском, а после сбоя блока перехвата (с $this->fail('sch\Exception was not thrown');) так как не было исключения, чтобы поймать, как было запланировано.

Было бы совершенно очевидно, что это происходит — и ясность в большинстве случаев более полезна, чем элегантность.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector