加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – CakePHP 3:模型单元测试失败 – “重复键值”

发布时间:2020-12-13 16:36:49 所属栏目:百科 来源:网络整理
导读:我正在使用Postgres(我认为与问题有关)和CakePHP 3。 我有以下单元测试来检查,以确保模型可以保存有效的数据集。当我运行以下测试时,使用标准的“烘烤”模型单元测试,我得到以下错误。 我认为这是问题: 我们正在使用灯具添加一些基本数据。这是我认为可
我正在使用Postgres(我认为与问题有关)和CakePHP 3。

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

我认为这是问题:

我们正在使用灯具添加一些基本数据。这是我认为可能导致问题的唯一地方。为了增加信任,当单元测试运行时,我运行以下命令获取下一个自动递增的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' => 'RestGetJson','response_api_class' => 'NextBusGeneric','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('AppModelEntityAgency',$saved);
}

错误:

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

我试过的东西

>将相同的代码复制到控制器中,并在表中成功添加实体。
>添加一个ID为200.同样的错误出现。

更新1

这个夹具具有ID字段设置每个记录。从夹具中删除它们会起作用,但是会破坏依赖于一些关系数据的其他单元测试。

我不喜欢这个解决方案,但在保存实体之前添加以下内容可以正常工作。
$this->Agencies->deleteAll('1=1');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读