test(system): 整改 QiniuSmsClientTest 时区硬编码——断言改用生产同款换算,机器无关 5/5

原断言硬编码 delivrd_at(epoch 1724591666)的 +8 结果 21:14:26,在非 +8 机器(本机 -07:00)必红。改用与生产 QiniuSmsClient 同款 LocalDateTimeUtil.of(epoch*1000)(系统默认时区)换算期望值→任意机器时区下稳定一致,零产代码改动,5/5 绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
lili 2026-06-15 19:41:00 -07:00
parent 4a5e1e479d
commit 043ba0814f
2 changed files with 6 additions and 4 deletions

View File

@ -22,7 +22,7 @@
**market 写路径整改(2026-06-14,ultracode)**:member 暴露写端口 `MuseAccountRecordProjectionApi` + DTO(member-server 实现读写自有 DAL、tenantId 由实现侧从上下文注入防伪造、事务沿用调用方),market 5 类改消费端口、移除 member.dal 依赖 → `KNOWN_VIOLATION_EXEMPTIONS` 清空、BC 门全绿。**附带修复**:round-2 重构 `ContentKnowledgeWorkOwnerFacade` 时遗留的旧测试 `KnowledgeWorkOwnerFacadeTest`(仍断言旧 WorkMapper 行为)已删除,其装配守卫/兜底两用例并入 `ContentKnowledgeWorkOwnerFacadeTest`(5/0F)——此为 round-2 一处假绿(当时构建在平台时区用例处中止、未真正跑到 knowledge),现已补正。
**后续基建 TODO**:openapi-diff CI 首跑验证、`completed=测试证据`兜底(台账加 testFiles 字段 + 门禁)、`dev-baseline` 收敛进 rules、跨域 `.application` 边界门、market-server→member-server pom 坐标收口(本次只消除 member.dal 代码 import,见 bc-boundaries §三遗留)、**ai/平台预存红测试整改**(CI 接电后将暴露;均非本轮改动引入):`MuseAiTaskServiceTest` 缺 `eventPublishOutboxService`/`candidateReviewService` 桩致 11 例 NPE **✅ 已整改 40/40(2026-06-15,补桩 + review lenient,零产代码改动)**;仍待:`MuseAiEventPublishOutboxMapperTest` 需真实 PostgreSQL、平台 `QiniuSmsClientTest` 硬编码北京时区在非 +8 机器失败。
**后续基建 TODO**:openapi-diff CI 首跑验证、`completed=测试证据`兜底(台账加 testFiles 字段 + 门禁)、`dev-baseline` 收敛进 rules、跨域 `.application` 边界门、market-server→member-server pom 坐标收口(本次只消除 member.dal 代码 import,见 bc-boundaries §三遗留)、**ai/平台预存红测试整改**(CI 接电后将暴露;均非本轮改动引入):`MuseAiTaskServiceTest` 缺 `eventPublishOutboxService`/`candidateReviewService` 桩致 11 例 NPE **✅ 已整改 40/40(2026-06-15,补桩 + review lenient,零产代码改动)**;`QiniuSmsClientTest` 时区硬编码 **✅ 已整改 5/5(2026-06-15,断言改用与生产同款 `LocalDateTimeUtil.of` 由系统时区换算→机器无关)**;仍待:`MuseAiEventPublishOutboxMapperTest` 需真实 PostgreSQL。
---
@ -117,7 +117,7 @@
### B. 验收债:86 个 needs_verification operation(B-debt,门禁口径→真实证据)
- ⬜ content **43/51**、market **28/32**、account **21/33**:缺 MockMvc/真实 PG 正式验收证据(非空壳)。按 BC 补真实 PG IT(参照已绿的 `P1rContentMergeSuggestionIT`/`P1rContentCoreCompletedApprovalIT` 范式),推 coverage 台账 completed。
- ✅ 唯一红 `P1rKnowledgeFlywayMigrationIT`(陈旧 V14→V21):本轮修复(真实 PG 验证中)。
- 🔧 ai/平台预存红测试整改(CI 接电将暴露):`MuseAiTaskServiceTest` 桩缺失 11 例 NPE **✅ 已整改(补 eventPublishOutboxService/candidateReviewService 桩 + review lenient,40/40,2026-06-15)**;仍 ⬜ `MuseAiEventPublishOutboxMapperTest` 需真实 PG、平台 `QiniuSmsClientTest` 硬编码北京时区。
- 🔧 ai/平台预存红测试整改(CI 接电将暴露):`MuseAiTaskServiceTest` 桩缺失 11 例 NPE **✅ 已整改(补 eventPublishOutboxService/candidateReviewService 桩 + review lenient,40/40,2026-06-15)**;`QiniuSmsClientTest` 时区硬编码 **✅ 已整改(5/5,机器无关)**;仍 ⬜ `MuseAiEventPublishOutboxMapperTest` 需真实 PG(real-PG IT)。
### C. 前端 muse-studio(B3,体量最大,最长的长板)

View File

@ -1,5 +1,6 @@
package cn.iocoder.muse.module.system.framework.sms.core.client.impl;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.iocoder.muse.framework.common.core.KeyValue;
import cn.iocoder.muse.framework.common.util.http.HttpUtils;
import cn.iocoder.muse.framework.test.core.ut.BaseMockitoUnitTest;
@ -13,7 +14,6 @@ import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.MockedStatic;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.muse.framework.test.core.util.RandomUtils.randomLongId;
@ -111,7 +111,9 @@ public class QiniuSmsClientTest extends BaseMockitoUnitTest {
SmsReceiveRespDTO status = statuses.get(0);
assertTrue(status.getSuccess());
assertEquals("DELIVRD", status.getErrorMsg());
assertEquals(LocalDateTime.of(2024, 8, 25, 21, 14, 26), status.getReceiveTime());
// 反假绿:期望值用与生产同款 LocalDateTimeUtil.of(epoch) 由系统默认时区换算,而非硬编码 +8 结果,
// 使断言与生产换算一致、在任意机器时区下稳定(原硬编码 21:14:26 在非 +8 机器必红)。
assertEquals(LocalDateTimeUtil.of(1724591666L * 1000L), status.getReceiveTime());
assertEquals("18881234567", status.getMobile());
assertEquals("10135515063508004167", status.getSerialNo());
assertEquals(123, status.getLogId());