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. 我试过的东西 >将相同的代码复制到控制器中,并在表中成功添加实体。 更新1 这个夹具具有ID字段设置每个记录。从夹具中删除它们会起作用,但是会破坏依赖于一些关系数据的其他单元测试。
我不喜欢这个解决方案,但在保存实体之前添加以下内容可以正常工作。
$this->Agencies->deleteAll('1=1'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |