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 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
什么情况下可以不写PHP的闭合标签“?>”
Aug 28 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
php实现中文字符截取防乱码方法汇总
Apr 29 PHP
PHP文件读取功能的应用实例
May 08 PHP
php猴子选大王问题解决方法
May 12 PHP
php生成动态验证码gif图片
Oct 19 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 PHP
PHP获取学生成绩的方法
Nov 17 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
Python遍历目录中的所有文件的方法
2016/07/08 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
用django设置session过期时间的方法解析
2019/08/05 Python
python获取Linux发行版名称
2019/08/30 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
Python爬虫与反爬虫大战
2020/07/30 Python
python 如何将office文件转换为PDF
2020/09/22 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
彪马法国官网:PUMA法国
2019/12/15 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
中青班党性分析材料
2014/02/16 职场文书
小学生操行评语大全
2014/04/22 职场文书
学校运动会报道稿
2014/09/23 职场文书
认真学习保证书
2015/02/26 职场文书
专家推荐信怎么写
2015/03/25 职场文书
家属联谊会致辞
2015/07/31 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
HDFS免重启挂载新磁盘
2022/04/06 Servers