laravel使用数据库测试注意事项
相对于其它测试,数据库测试可以说是相对复杂繁琐的,因为数据库测试不可避免地会涉及到数据库的增删改查,而这些操作会影响数据库的数据,而我们测试最忌讳的就是修改了数据的测试,因为这样的话下次测试的时候,可能测试结果就会发生改变。
庆幸的是,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数据库测试内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
PHPUnit + Laravel单元测试常用技能
1. 数据供给器 用来提供参数和结果,使用 @dataProvider 标注来指定使用哪个数据供给器方法.例如检测app升级数据是否符合预期,addProviderAppUpdateData()提供测试的参数和结果.testAppUpdateData()检测appUpdateData()返回的结果是否和给定的预期结果相等,即如果$appId='apple_3.3.2_117', $result=['status' => 0, 'isIOS' => false], 则$data中如果含有['st
-
laravel单元测试之phpUnit中old()函数报错解决
前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问题,但是在phpUnit中就报错 错误原因: exception 'RuntimeException' with message 'Session store not set on request.' in /Users/lei/Sites/goodstyle/vendor/laravel/framework/src/Illuminate/Http/Request.php:
-
laravel使用数据库测试注意事项
相对于其它测试,数据库测试可以说是相对复杂繁琐的,因为数据库测试不可避免地会涉及到数据库的增删改查,而这些操作会影响数据库的数据,而我们测试最忌讳的就是修改了数据的测试,因为这样的话下次测试的时候,可能测试结果就会发生改变. 庆幸的是,laravel为我们提供了非常简洁的数据库测试方法,而且不会影响原数据. use DatabaseMigrations 通过使用转移表,我们可以对数据进行.不过这就要求我们的数据是通过migration来生成的,如果直接在数据库创建的话,我们进行测试的时候就会提示
-
Laravel 的数据库迁移的方法
本文介绍了Laravel 的数据库迁移的方法,分享给大家,具体如下: 生成迁移 --table 和 --create 选项可用来指定数据表的名称,或是该迁移被执行时会创建的新数据表.这些选项需在预生成迁移文件时填入指定的数据表: php artisan make:migration create_users_table php artisan make:migration create_users_table --create=users php artisan make:migration a
-
Laravel实现数据库迁移与支持中文的填充
前言 数据库迁移实际上就是对数据库库表的结构变化做版本控制,之前对数据库库表结构做修改的方式比较原始,比如说对某张库表新增了一个字段,都是直接在库表中执行alter table xxx add .. 的方式直接修改,但是这么做有些弊端,比如在开发阶段,你自己的库表修改了,还要把这句sql语句传给别人再执行一遍,这在多人协同开发时不是一种好的方式.那有没有一种方式能让我们对数据库 库表的修改做一些简单的版本控制,同时能让其他人很方便的同步我们对数据库的修改呢? 答案是我们可以使用Laravel 内
-
谈谈PHP连接Access数据库的注意事项
首先需要注意: 安装access 数据库的时候 需要安装与本机系统相互匹配的office版本,win7 64位的系统 ,那么Office也要是64位的 最好装 office2010... 因为我就是经历了从 2003 -2007 -2010的痛苦,特别是在装2010的时候,因为装载过2003版本的office ,导致需要彻底清除干净2003版本的office. 所有劝各位能装2010 的就尽量装2010的吧,不过你要是不装的话,也随便你啦o(* ̄▽ ̄*)o . 第一步 装 office 201
-
数据库测试 实用技巧及测试方法
同样的在金融.租凭.零售.邮寄.医疗领域中,数据库也是不可缺少的. 随着应用的复杂程度增加需要更强大和安全系数高的数据库才可以满足需求.为了满足高频率的应用程序事务(如银行或财务应用),数据库的安全性成为首要之重. 目前,市场中有很多活跃的数据库工具,例如MS-Access2010,MS SQL Server2008 r2,Oracle 10g,Oracle Financial,MySQL,PostgreSQL,DB2等等.它们在成本.可靠性.功能和安全性都有各自的优势. 下面为大家简单的介绍数
-
Laravel创建数据库表结构的例子
1.简介 迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel的schema构建器结对从而可以很容易地构建应用的数据库表结构.如果你曾经告知小组成员需要手动添加列到本地数据库结构,那么这正是数据库迁移所致力于解决的问题. Laravel 的Schema门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的.优雅的.平滑的API. 2.生成迁移 使用 Artisan 命令make:migration来创建
-
laravel框架数据库配置及操作数据库示例
本文实例讲述了laravel框架数据库配置及操作数据库.分享给大家供大家参考,具体如下: laravel 数据库配置 数据库配置文件为项目根目录下的config/database.php //默认数据库为mysql 'default' => env('DB_CONNECTION', 'mysql'), 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('
-
laravel 操作数据库常用函数的返回值方法
1.insert/insertGetId insert函数的返回值为boolean类型:成功为true,失败为false insertGetId函数的返回值为整型:成功为插入时的ID值,失败为- DB::table('users')->insert( ['name' => '上官帝文1', 'age' => 99] ); DB::table('users')->insertGetId( ['name' => '上官帝文2', 'age' => 98] ); 2.upda
-
laravel 查询数据库获取结果实现判断是否为空
大家使用的场景是这样的: $users = DB::table('users')->where('id',$id)->get(); if($users){ //有数据 }else{ //没数据 } 或 if(is_null($users)){ // } 或 if(empty($users)){ // } 以上方法都是不行的,在使用 Laravel Eloquent 模型时,我们要判断取出的结果集是否为空,但我们发现直接使用 is_null 或 empty是无法判段它结果集是否为空的!!! va
-
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
本文实例讲述了laravel框架数据库操作.查询构建器.Eloquent ORM操作.分享给大家供大家参考,具体如下: 1.连接数据库 laravel连接数据库的配置文件位于config/database.php中,在其中connection字段中包含laravel所支持的数据库的配置信息,可以看到其中有主机.端口.数据库.用户名.密码等信息: 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'),
随机推荐
- 浅谈CMD和win powershell的区别
- IOS开发UIButton(左边图片右边文字效果)
- ASP.NET MVC5使用MiniProfiler监控MVC性能
- 从请求管道深入剖析HttpModule的实现机制图文介绍
- JSP开发之Struts2实现下载功能的实例
- mysql 常见命令和学习心得
- python网络爬虫采集联想词示例
- 一个低学历者的辛酸程序路[贵在坚持]
- SQL Server 监控磁盘IO错误,msdb.dbo.suspect_pages
- 原生javascript图片自动或手动切换示例附演示源码
- Android中的常用尺寸单位(dp、sp)快速入门教程
- Android控件Chronometer定时器的实现方法
- 如何在DataGrid控件中实现自定义分页
- c#中返回文章发表的时间差的示例
- Android开发 -- setTag的妙用和The key must be an application-specific resource id 异常
- node下使用UglifyJS压缩合并JS文件的方法
- python3操作微信itchat实现发送图片
- .net core中Quartz的使用方法
- 详解jQuery如何实现模糊搜索
- Windows CVE-2019-0708 远程桌面代码执行漏洞复现问题