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设计模式 注册表模式(多个类的注册)
Feb 05 PHP
php获取服务器信息的实现代码
Feb 04 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
PHP安全上传图片的方法
Mar 21 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
Jul 12 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
原生js实现放大镜
2017/02/20 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
Python MD5加密实例详解
2017/08/02 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
python文件和文件夹复制函数
2020/02/07 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
python 实现多维数组(array)排序
2020/02/28 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
Python将字典转换为XML的方法
2020/08/01 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
信息专业学生学习的自我评价
2014/02/17 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
项目合作意向书
2015/05/08 职场文书
小学校本教研总结
2015/08/13 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android