网站首页 > 开源技术 正文
什么是mock?
mock就是使用一段伪造的代码来模拟实际的功能处理,模拟出来的数据和我们实际请求处理的数据是类似的或者匹配的。
什么时候使用mock?
当我们进行单元测试的时候,我们可能希望不要实际操作数据库,而是模拟数据库的交互,这样可以保护我们的数据库环境。
一些网络请求的api,可能会因为网络或者其它原因导致请求异常,我们就需要使用本地模拟数据进行测试。
phpunit中如何使用mock
对于数据库的mock,我们经常使用的就是伪造对象。
在php中,我们操作数据库很多情况下都是通过ORM来操作的,也就是通过关系对象模型来处理数据库内容。
我们可以伪造数据库对象,并对数据进行伪造赋值,这样,我们在调用ORM的相关操作的时候,就可以直接从伪造的数据中获取。
具体代码如下:
class Person
{
public $db = null;function __construct($db)
{
$this->db = $db;
}public function greeting($id)
{
$friend = $this->db->getPersonByID($id);
$friendName = $friend->name;
return "$friendName";
}
}
$db = new Database();
$person = new Person($db);
$dbMock = $this->getMockBuilder(Database::class)
->setMethods(['getPersonByID'])
->getMock();
$mockPerson = new stdClass();
$mockPerson->name = '梦回故里';
$dbMock->method('getPersonByID')->willReturn($mockPerson);
$test = new Person($dbMock);
$this->assertEquals('梦回故里', $test->greeting(2));
通过拦截orm操作数据库的方法,我们就可以对数据库方法进行测试。
使用第三方库
对于数据库的测试,我们还可以使用第三方库dbunit。
虽然使用orm进行数据库的mock可以模拟数据的操作和查询,但是毕竟没有操作数据库,因此还是有一定的问题存在,而dbunit解决了这个问题,它是真正去操作数据库。
总结
mock的出现为我们提供了一种新的测试方法,在不影响数据的情况下,使用mock进行测试可以大大提高我们的测试效率,同时它也避免了对环境的破坏。
猜你喜欢
- 2025-01-07 多库操作2:终于实现多个数据库操作
- 2025-01-07 天线知识图解(Antenna)
- 2025-01-07 统信UOS服务器操作系统离线安装postgresql数据库
- 2025-01-07 Delphi Login 窗体实现方案
- 2025-01-07 「asp.net core 系列」9 实战之 UnitOfWork以及自定义代码生成
- 2024-08-06 Kotlin、JUnit5、Database Rider数据库动态测试实践
- 2024-08-06 Java开发过程中必不可少的10个工具、框架和库推荐
- 2024-08-06 JAVA 程序员需要用到 10 个测试框架和库
- 2024-08-06 软件测试中的数据库测试(软件测试数据库有什么)
- 2024-08-06 Java开发人员的10个单元测试工具和库
你 发表评论:
欢迎- 05-16东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 05-16这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 05-16湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- 05-16Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- 05-16G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- 05-16DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 05-16上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- 05-16WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 最近发表
-
- 东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 湖人自媒体调查:89%球迷希望DFS回归 79%希望詹姆斯回归
- 一觉醒来湖人苦盼的纯3D终于到位 DFS能带给紫金军多少帮助
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)