小滕的博客

小滕的技术点滴

Laravel在dingo/api扩展包下的单元测试总是报错:The version given was unknown or has no registered routes

1 year ago · 0 MIN READ
#Laravel 

今天在公司项目写单元测试遇到一个问题,在一个测试文件中写了两个测试方法,都是请求相同的 api 地址,这里使用的是 dingo/api 扩展包,测试的话使用的是 dingo/api 提供的内部请求功能,当前的接口版本是 v2 所以在请求的时候需要指定版本,于是这样:

$dispatcher->version('v2')->post('order');

但是报错:

Dingo\Api\Exception\UnknownVersionException: The version given was unknown or has no registered routes.

于是改成这样:

$dispatcher->header('Accept', 'application/x.VFLY.v2+json')->post('order');

还是报错:

Dingo\Api\Exception\UnknownVersionException: The version given was unknown or has no registered routes.

于是,找了很久终于找到了一个解决方案:修改 phpunit.xml 文件中的 processIsolationtrue

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="true"
         stopOnFailure="false">
</phpunit>

方法来源: https://stackoverflow.com/questions/38478351/dingo-api-when-unit-testing-the-version-given-was-unknown-or-has-no-registered/38599735#38599735

不过虽然问题解决了,但是测试的时间大大的延长了。所以并不推荐直接使这样修改配置文件,可以配合命令行参数和测试用例来缩小作用范围。

···

xiao teng



备案号:皖ICP备14012032号-5