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 相关文章推荐
用文本作数据处理
Oct 09 PHP
杏林同学录(六)
Oct 09 PHP
php中常用编辑器推荐
Jan 02 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php 如何获取数组第一个值
Aug 06 PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 PHP
php PDO异常处理详解
Nov 20 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 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生成缩略图的类代码
2008/10/02 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
php绘制一个矩形的方法
2015/01/24 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
python属于哪种语言
2020/08/16 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
给老婆的保证书范文
2014/04/28 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
谢师宴家长致辞
2015/07/27 职场文书
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android