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 用sock技术发送邮件的函数
Jul 21 PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
Mar 23 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
php将session放入memcached的设置方法
Feb 14 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 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
菜鸟修复电子管记
2021/03/02 无线电
用 PHP5 轻松解析 XML
2006/12/04 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
window.open不被拦截的实现代码
2012/08/22 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
美国第一香水网站:Perfume.com
2017/01/23 全球购物
美国在线工具商店:Acme Tools
2018/06/26 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
股权转让意向书
2014/04/01 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
单位工作证明格式模板
2014/10/04 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
标枪加油稿
2015/07/22 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL
python数据处理之Pandas类型转换
2022/04/28 Python