gpt4 book ai didi

postgresql - CakePHP 3 : Model Unit Test fails - "duplicate key value"

转载 作者:行者123 更新时间:2023-11-29 11:10:28 25 4
gpt4 key购买 nike

我正在使用 Postgres(我认为这与问题有关)和 CakePHP 3。

我有以下单元测试来检查以确保模型可以保存有效的数据集。当我使用标准的“bake'd”模型单元测试运行以下测试时,出现以下错误。

我认为这是问题所在:

我们正在使用固定装置添加一些基础数据。这是我认为可能导致问题的唯一地方。为了增加可信度,在单元测试运行时我运行了以下命令来获取下一个自动递增的 id 值并返回 1,即使它在非测试数据库中返回了正确的数字. 选择 nextval(pg_get_serial_sequence('agencies', 'id')) 作为 new_id;

单元测试:

public function testValidationDefault()
{
$agencyData = [
'full_name' => 'Agency Full Name',
'mode' => 'transit',
'request_api_class' => 'Rest\Get\Json',
'response_api_class' => 'NextBus\Generic',
'realtime_url_pattern' => 'http://api.example.com',
'routes' => '{"123": {"full_route": "123 Full Route", "route_color": "#123456"}}'
];

$agency = $this->Agencies->newEntity($agencyData);
$saved = $this->Agencies->save($agency);
$this->assertInstanceOf('App\Model\Entity\Agency', $saved);
}

错误:

PDOException: SQLSTATE[23505]: Unique violation: 7 ERROR:  duplicate key value violates unique constraint "agencies_pkey"
DETAIL: Key (id)=(1) already exists.

我尝试过的事情

  • 将相同的代码复制到 Controller 中,并成功地将实体添加到表中。
  • 添加 200 的 ID。出现相同的错误。

更新1

此固定装置确实为每条记录设置了 ID 字段。从夹具中删除它们确实有效,但它会破坏依赖于某些关系数据的其他单元测试。

最佳答案

我不喜欢这个解决方案,但在保存实体之前添加以下内容确实有效。

$this->Agencies->deleteAll('1=1');

关于postgresql - CakePHP 3 : Model Unit Test fails - "duplicate key value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33678689/

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