如何避免删除含子项父行?一对多模型删除图标隐藏测试方案咨询
针对该场景的测试逻辑梳理
我来帮你拆解这个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
相关产品推荐
相关产品推荐

