1. phpunit.xml 中添加 dingo 相关配置

<env name="API_STANDARDS_TREE" value="x"/>
<env name="API_SUBTYPE" value="prime"/>
<env name="API_VERSION" value="v1"/>
<env name="API_DEFAULT_FORMAT" value="json"/>
<env name="API_STRICT" value="false"/>
<env name="API_PREFIX" value="api"/>

2. dingo 的路由配置文件包含不能使用 require_once。

否则, 可能会出现一种情况是, phpunit 中第一个请求成功了, 但是后面的请求都 404。

这里涉及到的一个知识点是:laravel 或 lumen phpunit 中每一个 test 都会使用独立的  Application 以及 TestCase 实例来运行,我们知道,框架在初始化的时候会加载路由的配置,如果我们的进程只跑一遍,这样其实没什么问题。

但是,phpunit 中的 TestCase 是,一个进程,然后一个 TestCase 里面有多少 test 方法,就会进行多少次框架的初始化操作,这样问题就出现了,后续的请求中,require_once 不能再读取到任何配置信息,因此导致了后续请求全部 404 了。

所以需要使用 require 代替 require_once。

知识点:同一个进程中,require_once 只有第一次 require 会执行文件里面的内容,后续 require 不再加载文件。

3. 在测试中添加以下方法调用

1. phpunit.xml 中添加 dingo 相关配置
<env name="API_STANDARDS_TREE" value="x"/>
<env name="API_SUBTYPE" value="prime"/>
<env name="API_VERSION" value="v1"/>
<env name="API_DEFAULT_FORMAT" value="json"/>
<env name="API_STRICT" value="false"/>
<env name="API_PREFIX" value="api"/> 2. dingo 的路由配置文件包含不能使用 require_once
否则, 可能会出现一种情况是, phpunit 中第一个请求成功了, 但是后面的请求都 404 3. 在测试中添加以下方法调用
public function setUp()
{
parent::setUp(); // 跳过 api 验证
$user = \Modules\User\Models\User::with(['company'])->find(61339);
$this->actingAsApi($user);
} /**
* Sets the API user.
*
* @param mixed $user
* @return $this
*/
protected function actingAsApi($user)
{
// mock service middleware
/** @var Mockery\Mock $auth */
$auth = Mockery::mock('Dingo\Api\Http\Middleware\Auth[handle]',
[
Mockery::mock('Dingo\Api\Routing\Router'),
Mockery::mock('Dingo\Api\Auth\Auth'),
]);
$auth->shouldReceive('handle')
->andReturnUsing(function ($request, \Closure $next) {
return $next($request);
});
$this->app->instance('Dingo\Api\Http\Middleware\Auth', $auth);
$auth = Mockery::mock('Dingo\Api\Auth\Auth[user]',
[
app('Dingo\Api\Routing\Router'),
app('Illuminate\Container\Container'),
[],
]);
$auth->shouldReceive('user')
->andReturnUsing(function () use ($user) {
return $user;
});
$this->app->instance('Dingo\Api\Auth\Auth', $auth); return $this;
}

  

lumen 使用 dingo API 在 phpunit 中 404 的解决方法, 以及鉴权问题的更多相关文章

  1. SpringMVC中404错误解决方法总结

    在新手配置Spring MVC的时候,感觉都弄好了之后,运行起来却显示404错误. 网上对出现404的问题不同情况,都有了解决方法,前几天我也遇到了这个问题,顺便把这些问题总结一下. 解决问题最重要的 ...

  2. Sublime Text 2/3中Autoprefixer失效解决方法

    ###Sublime Text 2/3中Autoprefixer失效解决方法: 相信每个前端er都会使用Subl这款工具吧,因为它有上千款开源的插件,而且功能各异,这里给大家带来的是标题中Autopr ...

  3. CAS SSO:汇集配置过程中的错误解决方法

    本教程为gevin.me原创文章,转载请注明: CAS SSO:配置过程中的错误解决方法 | Gevin’s Blog 本文将收集在配置CAS SSO遇到的所有错误,希望对大家有帮助,也方便下次搭建的 ...

  4. 关于获取URL中传值的解决方法--升级版

    这次页面之间的传值是升级版本,为什么是升级版本呢,因为这次页面的传值不一样了.大家可以看一下我原来的文章<关于获取URL中传值的解决方法> 其实上次就已经比较清楚的介绍了页面之间的传值,但 ...

  5. Spring自动扫描无法扫描jar包中bean的解决方法(转)

    转载自:http://www.jb51.net/article/116357.htm 在日常开发中往往会对公共的模块打包发布,然后调用公共包的内容.然而,最近对公司的公共模块进行整理发布后.sprin ...

  6. error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法

    1 问题还原 这里我有三个源文件:Base.hpp, Base.cpp 和 main.cpp 在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现 ...

  7. 【FAQ】运动健康服务REST API接口使用过程中常见问题和解决方法总结

    华为运动健康服务(HUAWEI Health Kit)为三方生态应用提供了REST API接口,通过其接口可访问数据库,为用户提供运动健康类数据服务.在实际的集成过程中,开发者们可能会遇到各种问题,这 ...

  8. 深入理解k8s中的访问控制(认证、鉴权、审计)流程

    Kubernetes自身并没有用户管理能力,无法像操作Pod一样,通过API的方式创建/删除一个用户实例,也无法在etcd中找到用户对应的存储对象. 在Kubernetes的访问控制流程中,用户模型是 ...

  9. IIS HTTP 错误 404.17 - Not Found HTTP 错误 404.2 解决方法

    出现这种情况的原因通常是因为先安装了Framework,后安装的IIS: 解决方法 运行cmd,输入: C:\Windows\Microsoft.NET\Framework\V4.0.30319\as ...

随机推荐

  1. Python set 集合

    简介 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联 合), intersection(交), difference ...

  2. Sqlserver 每日订单半小时数据统计

    ) '订单数' FROM (SELECT CASE THEN ), create_at, ) ),DATEPART(hh, create_at))+':00:00') ELSE ), create_a ...

  3. to_char

    to_date(to_char(to_date(#{conds.currentTime,jdbcType=VARCHAR},'YYYY-MM-DD hh24:mi:ss'),'hh24:mi:ss') ...

  4. LeetCode 561. Array Partition I (C++)

    题目: Given an array of 2n integers, your task is to group these integers into npairs of integer, say ...

  5. 《[C#] int与System.Int32有什么区别》

    最近园里的TeamOne写了一篇<[C#] int与System.Int32有什么区别>,发现里面有不少精彩的评论,所以忍不住想这篇文章总结一下:> 本文的主要参考资料: 1.< ...

  6. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  7. mvc 路由配置-学习2

    public class RouteConfig {    public static void RegisterRoutes(RouteCollection routes)    {       r ...

  8. Http的响应结构

    Http响应结构有三部分组成: Http头部(Http Header):它们包含了更多关于响应的信息.比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的传输实体内容的编码格式.如何在 ...

  9. Robot Framework 教程 (6) - 使用条件表达式

    本篇文章,主要对如何在Robot Framework中使用条件表达式做过程控制作说明. 按照Robot Framework的官方文档介绍,Robot Framework并不建议在TestCase或Ke ...

  10. js dom学习

    创建dom元素 var oLi = document.creteElement('li'); //创建livar aLi = oUl.getElementsByTagName('li');oLi.in ...