先把“表现不同”拆成可观察的差异,再决定这个组件是保留、改写还是退出验收范围。做法是:选两个差异最明显的页面,各取一条真实数据,按同一组观察点记录,能复现的差异写成验收样例,不能复现的差异先回到数据或配置层面查。
同一组件在不同页面表现不同,通常落在三种情况里。第一种是数据不同:组件读取的字段、数量、排序或空值状态不一样。第二种是上下文不同:父容器宽度、主题变量、权限状态、语言或路由参数不一样。第三种是渲染时机不同:组件在首屏、懒加载区或异步数据返回后才出现,导致状态初始化顺序不同。
这三类的验收写法不一样。数据差异要用同一份输入对照;上下文差异要固定一组环境参数;时机差异要固定触发顺序。如果跳过分类直接写“组件显示异常”,验收样例会变成主观描述,不同角色仍然各说各话。
保留适用于差异只出现在个别页面的数据形态上,而组件本身在多数页面一致。此时不必改组件,只需在验收样例里标注这些页面的数据前提,例如“列表为空时”或“字段缺失时”。前提是这些差异是业务上允许的,而不是掩盖了真实缺陷。
改写适用于差异来自组件对外部环境的隐式依赖。比如组件默认假设父容器有固定宽度,或默认主题变量一定存在。此时应把依赖显式化:宽度由外部传入,缺省值写清楚。改写的验收样例要同时覆盖“传入”和“未传入”两种状态,确认未传入时也有确定行为。
退出适用于该组件在两个页面承担的目标根本不同。例如同一张卡片在一个页面用于摘要跳转,在另一个页面用于内嵌操作。硬用一套验收样例会逼着两个页面互相妥协。退出的前提是:确认这不是同一职责,且替换成本低于持续维护两套隐式规则的成本。退出不等于删除,可以保留其中一个页面的用法,另一个页面换用更贴近其目标的组件。
假设某组件在“文章列表页”和“作者主页”都用来展示条目,但列表页显示摘要,作者主页只显示标题。若把两处都按“显示摘要”验收,作者主页会被判为异常;若都按“只显示标题”验收,列表页又会被判为信息不足。
可核对的写法是:先声明两页的目标不同,因此摘要字段一处必填、一处可省略;再各取一条数据,记录标题行数、省略行为、空值占位和点击区域。核对后如果发现作者主页在标题为空时没有任何占位,而列表页有,这就是意外差异,应回到组件的空值分支处理,而不是继续争论“哪页才算正常”。
样例能稳定复现,说明差异来自组件逻辑或配置,下一步是改组件并补充对应状态的验收项。样例不能复现,优先检查数据来源、缓存和加载顺序,而不是先改组件。两种页面都符合各自样例,说明差异是设计意图,保留即可,但要把前提写进建站规划方案的验收清单,避免下次评审时重新争论。
如果同一分歧反复出现,说明缺的不是更多样例,而是组件职责边界没有写清楚。此时应先明确这个组件服务的目标,再决定是继续保留一套规则,还是让其中一个页面退出该组件的适用范围。