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中文本操作的类
Mar 17 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
PHP中if和or运行效率对比
Dec 12 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
php简单读取.vcf格式文件的方法示例
Sep 02 PHP
PHP实现百度人脸识别
May 06 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 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实现paypal整合方法
2010/11/28 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
浅析php创建者模式
2014/11/25 PHP
PHP如何使用Memcached
2016/04/05 PHP
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
Vue $attrs & inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
微信小程序自定义胶囊样式
2020/12/27 Javascript
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
法定代表人授权委托书范本
2014/10/07 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年消防工作总结
2015/04/24 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python
Python读写yaml文件
2022/03/20 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis