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中使用PDF文档功能
Oct 09 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
php读取excel文件的简单实例
Aug 26 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 PHP
PHP实现的简单操作SQLite数据库类与用法示例
Jun 19 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP实现登录验证码校验功能
May 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
php递归函数怎么用才有效
2018/02/24 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
迟到检讨书300字
2014/02/14 职场文书
如何写好建议书
2014/03/13 职场文书
交通处罚决定书
2015/06/24 职场文书
运动会广播稿100字
2015/08/19 职场文书
员工担保书范本
2015/09/22 职场文书
mysql部分操作
2021/04/05 MySQL
Python简易开发之制作计算器
2022/04/28 Python
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技