相对于其它测试,数据库测试可以说是相对复杂繁琐的,因为数据库测试不可避免地会涉及到数据库的增删改查,而这些操作会影响数据库的数据,而我们测试最忌讳的就是修改了数据的测试,因为这样的话下次测试的时候,可能测试结果就会发生改变。
庆幸的是,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数据库测试内容请搜索站长技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持站长技术!
第一课趣味二进制——修改植物大战僵尸数据 任务介绍 学习目标 知识需求 需求工...
IT之家2月18日消息外媒 Windows Latest 报道,微软正在与谷歌合作进行一项新的改...
JSP spring boot / cloud 使用filter防止XSS 一.前言 XSS(跨站脚本攻击) 跨站脚...
在项目开始之前我们可以先去了解一下IConfiguration接口,.Net Core Web应用程序...
文章目录 前言 本周最重要的五件事情 本周搞砸的四件事情 本周的四个启发 前言 ...
一.前言 .NET Core 是一个通用开发平台,由 Microsoft 和 GitHub 上的 .NET 社区...
1.ajax跨域传递值是所需要的回传的类型为jsonp $.ajax({url: "http://.......",t...
首先插件配备好了,写一个HTML测试一下 首先创建一个文件夹,创建一个HTML 文件...
2 月 18 日消息 据外媒 Windowslatest 报道,在预览版本中发现的参考资料表明,...
昨天刚学了html的一些内容,就迫不及待的想做个京东上面的搜索条,结果做是做出...