• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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单元测试常用技能
    • laravel单元测试之phpUnit中old()函数报错解决
    上一篇:为你的 Laravel 验证器加上多验证场景的实现
    下一篇:yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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