php - 在测试期间重置 Laravel 数据库中的记录,但不重置数据库本身
问题描述
我现在正在测试我的 Laravel 应用程序并面临下一个问题:我的项目是从一个无框架的 PHP 项目迁移而来的,该项目已经有自己的数据库,所以我没有迁移大多数 db 数据。在测试期间我需要刷新我的数据库,但就我现在而言,当我使用use RefreshDatabase;
我的整个数据库时,我正在刷新(所以表也被删除了),所以 laravel 假设我每次都在迁移我的数据库表,我没有做什么。所以问题是:每个新测试是否有可能只刷新记录(我的意思是删除它们),而不是整个数据库?我用谷歌搜索了它,不幸的是没有找到可能有帮助的东西。提前致谢!
解决方案
如果您正在使用Phpunit
,您可以使用DatabaseTransactions
它会将您在测试中添加的内容添加到数据库中,然后将其删除。只需将其用作特征即可。
如果您不想创建测试数据库,可以使用以下简单方法:
<?php
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
use DatabaseTransactions;
...
您可以在docs中找到更多相关信息。
推荐阅读
- git - 在 Azure 中,有没有办法在创建/完成拉取请求时使用存储库和/或分支标记工作项/用户故事?
- eclipse - 为什么 Eclipse 遇到 NPE 更新我的 Maven 项目?
- c# - MailKit 附件写入 MemoryStream
- css - 如何在顺风中保持单个网格列的高度
- c++ - std::condition_variable 是否真的在阻塞之前解锁了给定的 unique_lock 对象?
- java - 具有嵌套分组依据的收集器(java 8)
- bluedata - 如何在一个集群中公开 HDFS 并在另一个集群/租户中使用 DataTap 访问它?
- swift - 使用正则表达式替换字符串中的组仅替换最后一个组
- memory-leaks - netty PoolChunk 中积累的内存
- javascript - 如何使用数字数组通过其 id 获取对象列表