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 $_SERVER["REQUEST_URI"]获取值的通用解决方法
Jun 21 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
解析PHP 5.5 新特性
Jul 02 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
php文件下载处理方法分析
Apr 22 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
有关PHP 中 config.m4 的探索
Aug 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
杏林同学录(四)
2006/10/09 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
jquery json 实例代码
2010/12/02 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
简单实现jQuery弹幕效果
2017/05/06 jQuery
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
基于Python闭包及其作用域详解
2017/08/28 Python
python实现机器学习之元线性回归
2018/09/06 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Django 开发环境配置过程详解
2019/07/18 Python
tensorflow 环境变量设置方式
2020/02/06 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
.NET是怎么支持多种语言的
2015/02/24 面试题
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
纠风工作实施方案
2014/03/15 职场文书
工程管理英文求职信
2014/03/18 职场文书
投资合作协议书
2014/04/17 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
初三毕业评语
2014/12/26 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis