⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯
FAIL repository src/domains/booking/payment.repository.test.ts > booking.payment.repository > returns payment page data with flights, passengers, and ancillary details
Error: Failed query: insert into "cities" ("id", "iata_code", "name", "timezone", "is_domestic", "pinyin_first_letter", "continent", "is_popular", "display_order", "is_deleted", "created_at", "updated_at") values (default, $1, $2, $3, $4, $5, $6, $7, $8, $9, default, default) returning "id", "iata_code", "name", "timezone", "is_domestic", "pinyin_first_letter", "continent", "is_popular", "display_order", "is_deleted", "created_at", "updated_at"
params: EOI,城市-EOI,Asia/Shanghai,true,E,,false,1,false
❯ NodePgPreparedQuery.queryWithCache node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/pg-core/session.ts:73:11
❯ node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/node-postgres/session.ts:154:19
❯ createCity tests/integration/helpers/factories.ts:93:21
91| overrides.pinyinFirstLetter ?? (isDomestic ? iataCode[0] : null);
92|
93| const [created] = await db
| ^
94| .insert(cities)
95| .values({
❯ createAirport tests/integration/helpers/factories.ts:136:35
❯ createFlight tests/integration/helpers/factories.ts:176:31
❯ createFlightWithSeatClass tests/integration/helpers/factories.ts:483:5
❯ createOrderScenario tests/integration/helpers/factories.ts:518:7
❯ src/domains/booking/payment.repository.test.ts:8:22
Caused by: error: duplicate key value violates unique constraint "cities_iata_code_unique"
❯ node_modules/.pnpm/pg-pool@3.10.1_pg@8.16.3/node_modules/pg-pool/index.js:45:11
❯ node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/node-postgres/session.ts:161:13
❯ NodePgPreparedQuery.queryWithCache node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/pg-core/session.ts:71:12
❯ node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/node-postgres/session.ts:154:19
❯ createCity tests/integration/helpers/factories.ts:93:21
❯ createAirport tests/integration/helpers/factories.ts:136:35
❯ createFlight tests/integration/helpers/factories.ts:176:31
❯ createFlightWithSeatClass tests/integration/helpers/factories.ts:483:5
❯ createOrderScenario tests/integration/helpers/factories.ts:518:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { length: 216, severity: 'ERROR', code: '23505', detail: 'Key (iata_code)=(EOI) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'cities', dataType: undefined, constraint: 'cities_iata_code_unique', file: 'nbtinsert.c', routine: '_bt_check_unique' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯
Test Files 1 failed | 124 passed (125)
Tests 1 failed | 1351 passed (1352)
Start at 02:08:54
Duration 90.18s (transform 8.62s, setup 45.27s, collect 92.13s, tests 161.35s, environment 62.44s, prepare 1613.11s)
Error: Error: Failed query: insert into "cities" ("id", "iata_code", "name", "timezone", "is_domestic", "pinyin_first_letter", "continent", "is_popular", "display_order", "is_deleted", "created_at", "updated_at") values (default, $1, $2, $3, $4, $5, $6, $7, $8, $9, default, default) returning "id", "iata_code", "name", "timezone", "is_domestic", "pinyin_first_letter", "continent", "is_popular", "display_order", "is_deleted", "created_at", "updated_at"
params: EOI,城市-EOI,Asia/Shanghai,true,E,,false,1,false
❯ NodePgPreparedQuery.queryWithCache node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/pg-core/session.ts:73:11
❯ node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/node-postgres/session.ts:154:19
❯ createCity tests/integration/helpers/factories.ts:93:21
❯ createAirport tests/integration/helpers/factories.ts:136:35
❯ createFlight tests/integration/helpers/factories.ts:176:31
❯ createFlightWithSeatClass tests/integration/helpers/factories.ts:483:5
❯ createOrderScenario tests/integration/helpers/factories.ts:518:7
❯ src/domains/booking/payment.repository.test.ts:8:22
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { query: 'insert into "cities" ("id", "iata_code", "name", "timezone", "is_domestic", "pinyin_first_letter", "continent", "is_popular", "display_order", "is_deleted", "created_at", "updated_at") values (default, $1, $2, $3, $4, $5, $6, $7, $8, $9, default, default) returning "id", "iata_code", "name", "timezone", "is_domestic", "pinyin_first_letter", "continent", "is_popular", "display_order", "is_deleted", "created_at", "updated_at"', params: [ 'EOI', '城市-EOI', 'Asia/Shanghai', true, 'E', null, false, 1, false ] }
Caused by: Caused by: error: duplicate key value violates unique constraint "cities_iata_code_unique"
❯ node_modules/.pnpm/pg-pool@3.10.1_pg@8.16.3/node_modules/pg-pool/index.js:45:11
❯ node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/node-postgres/session.ts:161:13
❯ NodePgPreparedQuery.queryWithCache node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/pg-core/session.ts:71:12
❯ node_modules/.pnpm/drizzle-orm@0.44.7_@opentelemetry+api@1.9.0_@types+pg@8.15.5_kysely@0.28.8_pg@8.16.3/node_modules/src/node-postgres/session.ts:154:19
❯ createCity tests/integration/helpers/factories.ts:93:21
❯ createAirport tests/integration/helpers/factories.ts:136:35
❯ createFlight tests/integration/helpers/factories.ts:176:31
❯ createFlightWithSeatClass tests/integration/helpers/factories.ts:483:5
❯ createOrderScenario tests/integration/helpers/factories.ts:518:7
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { length: 216, severity: 'ERROR', code: '23505', detail: 'Key (iata_code)=(EOI) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'cities', dataType: undefined, constraint: 'cities_iata_code_unique', file: 'nbtinsert.c', routine: '_bt_check_unique' }
ELIFECYCLE Command failed with exit code 1.
Error: Process completed with exit code 1.
问题描述
目前单元测试存在不稳定情况,表现为随机生成的测试数据有可能重复,导致插入数据库的时候冲突
重现步骤
可以比较下面两次 CI/CD pipeline 运行情况,同样是 PR #244 触发的运行(该 PR 的修改没有涉及和单元测试等等相关的代码)
预期行为
清楚简洁地描述你期望发生的事情。
实际行为
为了方便查看,我将报错信息拷贝如下:
截图
如果适用,添加截图来帮助解释你的问题。
环境信息
附加信息
在这里添加关于问题的任何其他背景信息。
相关问题