先给出结论:不要为“组件本身”写一份验收样例,而要为“组件所处的页面上下文”各写一份。同一组件在A页正常、在B页异常,通常不是组件代码随机失效,而是页面给了它不同的容器宽度、父级样式、加载顺序或数据条件。验收样例要能把这些差异固定下来,才能判断该保留、改写还是退出这个组件方案。
构造验收样例前,先做一次归因。把同一组件分别放进两个页面,保持组件参数不变,只改变页面条件,观察表现是否复现。可区分的证据大致有三类:
如果三类条件都排除后仍复现,才值得怀疑组件自身的实现。这个顺序决定了你后面是改页面、改组件,还是换方案。
当组件在多数页面表现一致,只有少数页面需要微调,保留是成本最低的选择。适用前提是:差异可以用明确的页面条件描述,而不是靠“感觉不对”来判断。
此时验收样例应写成条件加预期结果的形式,例如:
一个实际动作:先只改该页面的容器类名或外层包裹,不动组件本身,然后重新走一遍上面三条。如果三条都通过,说明差异被页面条件吸收,保留方案成立,下一步只需把这几条写进该页模板的验收清单。如果只有部分通过,说明差异不止一层,继续保留会把问题拖到上线后。
如果同一差异在多个页面重复出现,每次都要单独调页面,说明条件应该由组件自己处理。适用前提是:这些页面共享同一套内容结构,差异可以用组件参数或内部样式规则表达。
改写后的验收样例重点从“页面表现”转向“参数组合”。例如给组件增加宽度模式和标题行数两个可调项,样例就变成:
代价是组件复杂度上升,后续每加一个页面条件都可能增加一个参数。因此改写适合差异已经稳定、且短期内不会频繁变化的场景。若差异本身还在变,过早改写会把不稳定的规则固化进组件。
有些组件的表现依赖它无法控制的父级样式或脚本加载顺序,导致同一页面在不同状态下结果不同。这种情况下,继续加参数或加覆盖样式,只会让验收样例越来越难写。
判断是否退出,可以看一个信号:你写出的验收样例里,出现越来越多“如果……则可能……”的模糊条件,而不是明确的通过或不通过。此时更实际的动作是,用一个结构更简单、依赖更少的替代组件重做同一位置,然后重新构造样例。退出不是失败,而是承认当前组件与页面上下文的耦合已经超出可控范围。
无论保留、改写还是退出,验收样例都应落到可重复执行的步骤上:
假设一个短例子:某卡片组件在列表页正常,在详情页右侧栏溢出。先按上面三步记录详情页的容器宽度和卡片标题长度,再决定是只改详情页容器,还是给卡片加窄容器模式。这个假设说明的是比较方法,不是真实项目结果。做完这一步,你才能判断下一步是继续调页面,还是动组件本身。