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 和 MYSQL
Oct 09 PHP
自动分页的不完整解决方案
Jan 12 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
PHP实现加密的几种方式介绍
Feb 22 PHP
php去除头尾空格的2种方法
Mar 16 PHP
php中实现字符串翻转的方法
Feb 22 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
Javascript UrlDecode函数代码
2010/01/09 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
Python入门篇之正则表达式
2014/10/20 Python
Python 控制终端输出文字的实例
2019/07/12 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
优秀中专生推荐信
2013/11/17 职场文书
大学四年职业生涯规划书范文
2014/01/02 职场文书
意向协议书范本
2014/04/23 职场文书
个人担保书格式范文
2014/05/12 职场文书
工作表扬信范文
2015/01/17 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
如何写好活动总结
2019/06/21 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python