gpt4 book ai didi

laravel使用数据库测试注意事项

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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等数据库,它会启用事务,也就是我们测试的数据不会真的提交,测试完毕后,进行回滚,然后提交,也就是相当于我们对数据库什么也没做.

测试数据库的时候,我们都是使用工厂进行创建数据,否则你会发现即使数据库有数据,也是空的.

?
1
2
3
4
5
6
7
8
9
10
11
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数据库测试内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://www.80shihua.com/archives/2324 。

最后此篇关于laravel使用数据库测试注意事项的文章就讲到这里了,如果你想了解更多关于laravel使用数据库测试注意事项的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com