laravel使用数据库测试注意事项


Posted in PHP onApril 10, 2020

相对于其它测试,数据库测试可以说是相对复杂繁琐的,因为数据库测试不可避免地会涉及到数据库的增删改查,而这些操作会影响数据库的数据,而我们测试最忌讳的就是修改了数据的测试,因为这样的话下次测试的时候,可能测试结果就会发生改变。

庆幸的是,laravel为我们提供了非常简洁的数据库测试方法,而且不会影响原数据。

use DatabaseMigrations

通过使用转移表,我们可以对数据进行。不过这就要求我们的数据是通过migration来生成的,如果直接在数据库创建的话,我们进行测试的时候就会提示:

SQLSTATE[HY000]: General error: 1 no such table: exchange_code

我们可以看下DatabaseMigrations的源码,可以看到它是trait,它会在执行测试之前

migrate:fresh

执行测试之后

migrate:rollback

这样的话就保证我们对数据库的操作都会进行回滚。

注意事项

这里的migrate:fresh 会删除掉所有表,然后重建数据.

use RefreshDatabase

这种方式回去判断是否是内存数据测试,如果是的话,因为是在内存操作,不影响数据库。

如果是mysql等数据库,它会启用事务,也就是我们测试的数据不会真的提交,测试完毕后,进行回滚,然后提交,也就是相当于我们对数据库什么也没做。

测试数据库的时候,我们都是使用工厂进行创建数据,否则你会发现即使数据库有数据,也是空的。

public function testGet()
 {
  factory(Exchange::class)->create();

  $exchange = Exchange::select('code')->where('status', 0)->first();
  $code = $exchange->code;

  $this->assertDatabaseHas('exchange_code', [
   'code' => $code,
  ]);
 }

总结

到此这篇关于laravel使用数据库测试注意事项的文章就介绍到这了,更多相关laravel数据库测试内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php 调用远程url的六种方法小结
Nov 02 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
php使用websocket示例详解
Mar 12 PHP
Yii配置文件用法详解
Dec 04 PHP
PHP连接操作access数据库实例
Mar 30 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
Zend Framework实现多文件上传功能实例
Mar 21 PHP
Yii实现显示静态页的方法
Apr 25 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 PHP
php实现微信支付之企业付款
May 30 PHP
解决Laravel5.5下的toArray问题
Oct 15 PHP
一文搞懂PHP中的抽象类和接口
May 25 PHP
为你的 Laravel 验证器加上多验证场景的实现
Apr 07 #PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 #PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 #PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 #PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 #PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 #PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 #PHP
You might like
文件上传程序的全部源码
2006/10/09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
ThinkPHP模型详解
2015/07/27 PHP
javascript 写类方式之一
2009/07/05 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
校领导推荐信
2013/11/01 职场文书
村班子对照检查材料
2014/08/18 职场文书
少先队活动总结
2014/08/29 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
使用python绘制分组对比柱状图
2022/04/21 Python
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android