PHPUnit断言项目

时间:2016-05-18 08:18:55

标签: php phpunit swagger-2.0 swagger-php

我正在开发一个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生产代码中使用这个项目。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果不满足条件,断言会抛出异常。如果抛出异常,它将阻止所有后续代码执行,直到它被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;
}

希望这有帮助。