test(shop-data-crawl): 修复 ShopDataCrawlTaskServiceRetentionTest 因构造依赖漏 mock 导致的 NPE——Task 35 给 ShopDataCrawlTaskService 新增了 shopDataCrawlItemStoreService(行级明细落库)与 TaskProgressLightAssembler 两个构造依赖,而本测试的 @Mock 列表未同步更新;@InjectMocks 走构造注入时没有对应 @Mock 的构造参数会被传 null,于是 assembleDailyWorkbook 里的 saveShopBatchFromSnapshot 调用直接 NPE(11 用例 2 失败 5 错误,表现含'期望 IllegalStateException 实为 NullPointerException')。补两个 @Mock 后 11/11 通过,相关模块 310 用例全绿

This commit is contained in:
2026-09-10 14:34:55 +08:00
parent 08e78ebe55
commit b9768aac5e
@@ -19,6 +19,7 @@ import com.nanri.aiimage.modules.task.model.entity.TaskFileJobEntity;
import com.nanri.aiimage.modules.task.model.entity.TaskScopeStateEntity;
import com.nanri.aiimage.modules.task.service.TaskDistributedLockService;
import com.nanri.aiimage.modules.task.service.TaskFileJobService;
import com.nanri.aiimage.modules.task.service.TaskProgressLightAssembler;
import com.nanri.aiimage.modules.task.service.TaskProgressSnapshotService;
import com.nanri.aiimage.modules.task.service.TaskResultItemService;
import com.nanri.aiimage.modules.task.service.TransientPayloadStorageService;
@@ -97,6 +98,13 @@ class ShopDataCrawlTaskServiceRetentionTest {
@Mock private TransientPayloadStorageService transientPayloadStorageService;
@Mock private InstanceMetadata instanceMetadata;
@Mock private ShopDataCrawlDailyFileService dailyFileService;
/**
* Task 35 起 ShopDataCrawlTaskService 构造依赖新增了行级明细落库与轻量进度组装。
* @InjectMocks 走构造注入时,构造参数里没有对应 @Mock 的会被传 null ——
* 漏掉这里会让 assembleDailyWorkbook 的 saveShopBatchFromSnapshot 直接 NPE。
*/
@Mock private ShopDataCrawlItemStoreService shopDataCrawlItemStoreService;
@Mock private TaskProgressLightAssembler taskProgressLightAssembler;
@Mock private PlatformTransactionManager transactionManager;
@Mock private TransactionStatus transactionStatus;
@Spy private final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();