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 相关文章推荐
PHP4 与 MySQL 交互使用
Oct 09 PHP
我的论坛源代码(七)
Oct 09 PHP
php的一些小问题
Jul 03 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Oct 26 PHP
php模板原理讲解
Nov 13 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
Nov 30 PHP
PHP简单计算两个时间差的方法示例
Jun 20 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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/11/16 PHP
PHP的面试题集
2006/11/19 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
简单谈谈json跨域
2016/03/13 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
python调用百度语音REST API
2018/08/30 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
python如何将图片转换素描画
2020/09/08 Python
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
保荐人的岗位职责
2013/11/19 职场文书
五一服装活动方案
2014/01/11 职场文书
高中团支书竞选稿
2015/11/21 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python