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数据库连接
Oct 09 PHP
php站内搜索并高亮显示关键字的实现代码
Dec 29 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
php操作redis常见方法示例【key与value操作】
Apr 14 PHP
PHP http请求超时问题解决方案
Nov 13 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+mysql分页代码详解
2008/03/27 PHP
php的正则处理函数总结分析
2008/06/20 PHP
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python数据归一化及三种方法详解
2019/08/06 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
Shell编程面试题
2016/05/29 面试题
Weblogic和WebSphere不同特点
2012/05/09 面试题
精选干货:Java精选笔试题附答案
2014/01/18 面试题
生物学学生自我评价
2014/01/17 职场文书
大学校园活动策划书
2014/02/04 职场文书
退休欢送会致辞
2015/07/31 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
Python入门之基础语法详解
2021/05/11 Python
OpenCV-Python实现油画效果的实例
2021/06/08 Python