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 相关文章推荐
动易数据转成dedecms的php程序
Apr 07 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
PHP strripos函数用法总结
Feb 11 PHP
php实现微信分享朋友链接功能
Feb 18 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 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
PHP实现简单爬虫的方法
2015/07/29 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
详谈js模块化规范
2017/07/07 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
Python实现端口复用实例代码
2014/07/03 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
一套Delphi的笔试题二
2013/05/11 面试题
大学生就业自我推荐信
2014/05/10 职场文书
小学重阳节活动总结
2015/03/24 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS