这篇文章主要介绍了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数据库测试内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:laravel使用数据库测试注意事项


基础教程推荐
- thinkPHP3.2.2框架行为扩展及demo示例 2022-11-07
- PHP删除数组中指定值的元素常用方法实例分析【4种方法】 2022-11-12
- php中使用array_filter()函数过滤数组实例讲解 2023-05-19
- PHP实现生成数据字典功能示例 2022-10-18
- PHP使用SMTP邮件服务器发送邮件示例 2022-11-16
- PHP实现创建一个RPC服务操作示例 2023-04-01
- TP5 连接多个数据库及使用方法 2023-08-30
- TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例 2023-01-19
- laravel model模型定义实现开启自动管理时间created_at,updated_at 2023-03-02
- PHP数据加密方式梳理介绍 2023-07-03