laravel使用数据库测试注意事项
程序员文章站
2022-03-06 23:35:35
相对于其它测试,数据库测试可以说是相对复杂繁琐的,因为数据库测试不可避免地会涉及到数据库的增删改查,而这些操作会影响数据库的数据,而我们测试最忌讳的就是修改了数据的测试,因为这样的话下次测试的时候,可...
相对于其它测试,数据库测试可以说是相对复杂繁琐的,因为数据库测试不可避免地会涉及到数据库的增删改查,而这些操作会影响数据库的数据,而我们测试最忌讳的就是修改了数据的测试,因为这样的话下次测试的时候,可能测试结果就会发生改变。
庆幸的是,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使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
-
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
-
在Laravel5.6中使用Swoole的协程数据库查询
-
Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库
-
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
-
Laravel如何使用数据库事务及捕获事务失败后的异常详解
-
如何使用Visual Studio 2010在数据库中生成随机测试数据
-
使用SQL语句直接修改数据库数据来满足测试需求
-
MySQL数据库在使用时的注意事项
-
Spring Data Jpa使用@Version进行数据库乐观锁控制注意事项