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 相关文章推荐
一个高ai的分页函数和一个url函数
Oct 09 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
php标签云的实现代码
Oct 10 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
PHP简单日历实现方法
Jul 20 PHP
PHP二分查找算法示例【递归与非递归方法】
Sep 29 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
php实现算术验证码功能
Dec 05 PHP
PHP7 弃用功能
Mar 09 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
三级下拉菜单的js实现代码
2011/05/23 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
python基础教程之匿名函数lambda
2017/01/17 Python
Android分包MultiDex策略详解
2017/10/30 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
python读取和保存图片5种方法对比
2018/09/12 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
护士试用期自我鉴定
2014/02/08 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
商铺门面租房协议书
2014/10/21 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
mysql序号rownum行号实现方式
2022/12/24 MySQL