Проект PHPUnit Assertions

Я работаю над проектом PHP, который требует проверки JSON-запроса к предопределенной схеме, которая доступна в swagger. Теперь я провел исследование и обнаружил, что лучший проект для этого — SwaggerAssertions:

https://github.com/Maks3w/SwaggerAssertions

В SwaggerAssertions / tests / PhpUnit / AssertsTraitTest.php я хотел бы использовать метод testAssertRequestBodyMatch, где вы делаете это:

self::assertRequestBodyMatch($request, $this->schemaManager, '/api/pets', 'post');

Это утверждение выше делает именно то, что мне нужно, но если я передам неверный запрос, это приведет к фатальной ошибке. Я хочу перехватить это и обработать ответ, а не завершить приложение.

Как я могу использовать этот проект, даже если он выглядит как все для PHPUnit? Я не слишком уверен, как можно было бы использовать этот проект в обычном производственном коде PHP. Любая помощь будет принята с благодарностью.

2

Решение

Утверждения генерируют исключения, если условие не выполняется. Если выдается исключение, он останавливает выполнение всего следующего кода, пока не будет перехвачен в try catch блок. Невыполненные исключения вызовут фатальную ошибку, и программа закроется.

Все, что вам нужно сделать, чтобы предотвратить сбой вашего приложения, это обработать исключение:

try {
self::assertRequestBodyMatch($request, $this->schemaManager, '/api/pets', 'post');

// Anything here will only be executed if the assertion passed

} catch (\Exception $e) {
// This will be executed if the assertion,
// or any other statement in the try block failed

// You should check the exception and handle it accordingly
if ($e instanceof \PHPUnit_Framework_ExpectationFailedException) {
// Do something if the assertion failed
}

// If you don't recognise the exception, re-throw it
throw $e;
}

Надеюсь это поможет.

1

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

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

По вопросам рекламы [email protected]