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 Mssql操作简单封装支持存储过程
Dec 11 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
php实现图片缩放功能类
Dec 18 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
php查看网页源代码的方法
Mar 13 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
Oct 16 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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使用百度翻译api示例分享
2014/01/31 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
js图片预加载示例
2014/04/30 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
Django中template for如何使用方法
2021/01/31 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
计算机专业推荐信范文
2013/11/20 职场文书
八年级英语教学计划
2015/01/23 职场文书
高中社区服务活动报告
2015/02/05 职场文书
爱心捐书倡议书
2015/04/27 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android
详解JAVA的控制语句
2021/11/11 Java/Android
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL