gpt4 book ai didi

laravel - 我们是否还应该使用那些仅用于在我们的测试中更改数据库中的数据的迁移?

转载 作者:行者123 更新时间:2023-11-28 21:36:44 24 4
gpt4 key购买 nike

我们有一堆迁移(200 多个),其中大部分是为了更改数据库中的数据并影响我们的测试。例如我们有这样一个迁移

 public function up()
{
$deleteId = DB::table('lookups')
->where('code', '=', 'VI')
->where('type', '=', 'country')
->where('value', '=', 'U.S. Virgin Islands')
->first(['id'])->id;

DB::table('lookups')
->where('id', '=', $deleteId ?? 0)
->update(['deleted_at' => Carbon::now()->toDateTimeLocalString()]);
}

如您所见,如果我们在测试环境中运行它,将会抛出一个错误。因为该记录在测试环境中不存在。 (我们为此目的使用了 faker)。我的问题是,我们应该如何跳过这种迁移或者最好的解决方案是什么?

最佳答案

有趣的问题。我将在我的回答中做出一些假设,所以请检查它们,如果有任何不正确的地方,请告诉我。

  1. 您是开发团队的一员。
  2. 在客户环境中,如果在运行迁移时记录不存在,则表明环境中存在错误。
  3. 您未在此测试中明确测试此迁移。

好的,所以首先我的脑子里响起了一些警钟。本质上,您是在说您的测试环境与客户环境不匹配。当然,这不一定是问题,但请确保您的测试环境足以代表客户环境,以使测试有意义。

在理想情况下,我会通过确保您的假环境具有迁移所需的记录来避免错误。通过这种方式,您还可以在迁移运行时对其进行练习。

您提供的是假数据库吗?用于测试的内存数据库?如果是这样,只需在数据库启动时添加记录,以便可以运行迁移。

您是在模拟对数据库的调用吗?如果是这样,您是否尝试过模拟对此函数的调用并使其成为空操作?

关于laravel - 我们是否还应该使用那些仅用于在我们的测试中更改数据库中的数据的迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58037816/

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