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语法(4)
Oct 09 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
PHP可变函数的使用详解
Jun 14 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
php表单敏感字符过滤类
Dec 08 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
php中namespace use用法实例分析
Jan 22 PHP
php操作access数据库的方法详解
Feb 22 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python求导数的方法
2015/05/09 Python
深入理解python try异常处理机制
2016/06/01 Python
python一键升级所有pip package的方法
2017/01/16 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
百度吧主申请感言
2014/01/12 职场文书
九年级语文教学反思
2014/02/04 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
辞职信怎么写
2015/02/27 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android