lumen 单元测试的一些问题
1、一个 test 多个请求
如 $this->post,然后又 $this->post,我们会发现第二个请求中的请求参数是和第一个请求的参数是完全一样的,然后在 Controller 里面通过 spl_object_hash 方法发现两个请求的 request 实例是一样的,应该是第二个请求发起的时候,request 不再实例化,直接使用了上一次请求的 request 实例。
这种情况我们可以用过 request 实例的 replace 方法,替代掉 request 实例的请求参数,这样我们第二个请求就可以按照我们预期地跑了。
$this->post('xxx', ['a' => 1]); app('request')->replace([
'b' => 2
]); $this->post('yyy');
2、使用 mock 的时候,mock 一个不存在的方法不会报错
其实这也算是 mock 本身要实现的功能,但是如果我们可能在调用多个对象的方法的时候会混淆,mock 了一个错误的对象的方法,但实际上应该是 mock 另外一个。
如果我们 mock 了之后,对象方法表现还是原来的样子就应该考虑一下是不是 mock 了一个错误的对象。
3、不能对 private final static 方法进行 mock,需要对 mock 的对象调用 setMethods,说明我们要对哪些方法进行 mock,否则可能会报错。
4、配合 laravel-modules 的时候,需要把路由的 require_once 替换成 require,但是这样会导致后续请求会很慢(需要做特殊处理,防止重复加载这些文件的同时,路由又能保留下来)
5、phpunit 需要添加
<php>
<env name="API_VERSION" value="v1.1.5"/>
</php>
6、mock user
$this->be(User)
管理员
$this->be(AdminUser, 'admin')
7、请求
$this->get()
$this->post()
8、响应
$this->response
9、状态码
$this->response->status()
lumen 单元测试的一些问题的更多相关文章
- lumen 单元测试
laravel学院:http://laravelacademy.org/post/238.html 简书:https://www.jianshu.com/p/d8b3ac2c4623 问题解决:htt ...
- lumen单元测试
phpunit --filter testInfo tests/UserTest.php UserTest.php <?php use Laravel\Lumen\Testing\Databa ...
- laravel/lumen 单元测试
Testing Introduction Application Testing Interacting With Your Application Testing JSON APIs Session ...
- Lumen开发:phpunit单元测试
先来直接运行,cmd先进入根目录,然后进入tests或是test文件夹 运行命令行:..\vendor\bin\phpunit ExampleTest.php laravel/lumen中集成了PHP ...
- phpstorm laravel单元测试 配置
laravel中集成了单元测试工具phpunit可以在项目的根目录下进行使用,命令是:phpunti ./tests/单元测试文件名称.在phpstorm中使用phpunit需要做一些配置,指定com ...
- Intellij idea添加单元测试工具
1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...
- Python的单元测试(二)
title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...
- Python的单元测试(一)
title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...
- javascript单元测试框架mochajs详解
关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...
随机推荐
- 多线程分段下载研究的python实现(一)
我一直对下载文件比较感兴趣.现在我下载文件大部分是用迅雷,但迅雷也有一些不如意的地方,内存占用大,一些不必要的功能太多,不可定制.尤其是最后一点.现在有些下载对useragent,cookie,aut ...
- 使用 PropTypes 进行类型检查
注意: 从 React v15.5 开始 ,React.PropTypes 助手函数已被弃用,建议使用 prop-types 库 来定义contextTypes. 1 2 3 4 5 6 7 8 9 ...
- Python20-Day06
常用模块 一.random模块 import random # print(random.random()) #打印0-1之间的小数 # print(random.randint(1,3)) #大于等 ...
- 苏宁笔试:UML类图中的关系
1. 依赖 2. 关联 3. 聚合 4. 组合 5. 泛化 6. 实现
- 树莓派3+rtl8812au开启monitor模式
首先要有一块树莓派,要有一块rtl8812au的网卡. 这个网卡是支持monitor模式的,但是我原来装的驱动驱动在raspbian上开启monitor模式时提示,找不到设备. 然后换了一个驱动 ht ...
- “Hello World!”团队第五周第七次会议
博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 八.checkout&push代码 一.会议时间 2017年11月16日 ...
- 团队计划backlog---DayTwo
任务索引卡(Two): 1. 季方:实现界面跳转,数据库相关数据的显示 的测试: 2. 司宇航:添加部分团队博客,并测试: 3. 王金萱.马佳慧:学习爬虫的相关内容,为将来统计博客部分做准备: ...
- Sprint9
进展:完善设置事件提醒界面,增加调用手机铃声部分,以及是否选择振动,以及可以添加事件进行保存.
- Task 6.4 冲刺Two之站立会议6
今天对视频的画面质量进行了优化,又把所有的界面更换了一些比较美观的图片和背景.使界面看起来更加地合理,易于接受.
- dsdsd
#include<iostream> using namespace std; #include<string.h> #define max 205 char map[max] ...