You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免删除含子项父行?一对多模型删除图标隐藏测试方案咨询

针对该场景的测试逻辑梳理

我来帮你拆解这个One-to-Many关联下的删除图标隐藏功能,需要从单元测试、集成测试、边界场景三个维度来覆盖,确保逻辑的准确性:

一、单元测试(聚焦PanelList组件内部逻辑)

单元测试要隔离外部依赖,只验证组件本身的渲染逻辑:

  • 测试用例1:父记录存在关联子记录时,删除图标不渲染
    模拟一条带有非空modelChild数组的modelParent数据作为组件props,渲染PanelList后,通过测试ID或选择器查询删除图标,断言该元素不存在于DOM中。
    示例代码(以React Testing Library为例):
    test('hides delete icon when parent has child records', () => {
      const mockParent = { id: 1, modelChild: [{ id: 101 }, { id: 102 }] };
      render(<PanelList parents={[mockParent]} />);
      expect(screen.queryByTestId('parent-delete-icon-1')).not.toBeInTheDocument();
    });
    
  • 测试用例2:父记录无关联子记录时,删除图标正常渲染
    模拟modelChild为空数组或未定义的modelParent数据,渲染后断言删除图标存在且可见。
  • 测试用例3:动态更新子记录时,删除图标状态同步变化
    先渲染带有子记录的父记录(删除图标隐藏),然后更新props将modelChild设为空,断言删除图标重新出现;反之亦然,先无后有,断言图标隐藏。

二、集成测试(验证关联关系与组件的联动)

集成测试要结合真实的数据源/模型关联,确保端到端的逻辑正确:

  • 测试用例1:加载数据库中带关联子记录的父记录
    从数据库创建一条modelParent记录,并关联多条modelChild记录,通过接口加载到PanelList组件中,验证删除图标隐藏。
  • 测试用例2:加载无关联子记录的父记录
    创建无关联的modelParent记录,加载后验证删除图标正常显示。
  • 测试用例3:删除所有子记录后,删除图标恢复显示
    先创建带关联子记录的父记录(图标隐藏),然后删除所有关联的子记录,刷新PanelList后,确认删除图标重新出现。

三、边界场景测试

覆盖一些容易忽略的特殊情况:

  • 测试modelChild字段为null或未初始化的父记录,确认组件将其视为“无关联”,正常显示删除图标。
  • 测试父记录仅关联1条子记录的情况,确认删除图标依然隐藏(确保逻辑不是判断子记录数量>1)。
  • 如果系统支持子记录软删除,测试关联的子记录均为软删除状态时,删除图标是否隐藏(需匹配业务逻辑:若软删除仍视为“存在关联”则隐藏,否则显示)。

内容的提问来源于stack exchange,提问作者Stef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:46:51