先别急着改组件,而是把“表现不同”拆成可核对的差异:同一组件在A页面正常、B页面异常,通常来自数据、容器、加载顺序或页面级覆盖四类原因。构造验收样例的目标,是让每个原因都能被单独复现或排除,而不是只截一张对比图就下结论。
取两个页面:一个表现正常的页面A,一个表现异常的页面B。先记录四组信息——组件传入的数据、外层容器的宽度与样式、组件加载的先后顺序、页面级CSS或脚本是否覆盖了组件默认值。把A和B的这四项并排列出,差异项往往就是突破口。
实际操作:在B页面用浏览器开发者工具临时注释掉页面级样式,刷新观察组件是否恢复。如果恢复,说明问题在页面级覆盖;如果不恢复,继续查数据和加载顺序。这个动作的结果直接决定下一步是改样式作用域还是查数据源。
验收样例不是“组件显示正常”,而是“在什么条件下,组件应呈现什么可观察结果”。围绕已发现的差异项,每个样例只控制一个变量:
每个样例都要写明前提假设。例如“假设B页面比A页面多加载了一个轮播脚本”,那么加载样例就应验证该脚本是否修改了组件依赖的全局状态。
假设某组件在A页面宽度正常,在B页面被压扁。两种解释都成立:一是B页面容器更窄,二是B页面某条CSS把组件的max-width改成了固定值。区分方法:先在B页面把容器宽度临时调到与A一致,若仍被压扁,则排除容器原因,指向CSS覆盖;若恢复正常,则容器宽度是主因。这个例子中的数字只是比较方法,不代表真实项目结果。
得到这个判断后,下一步动作就明确了:若是容器原因,调整页面布局;若是CSS覆盖,收窄选择器或提高组件样式优先级。两种处理影响的范围不同,验收样例也应随之调整。
确认原因后,把对应样例补进验收清单,并注明适用条件:仅在B页面存在该覆盖样式时生效,或仅在容器宽度低于某个阈值时出现。这样后续改版或新增页面时,能快速判断是否需要重跑该样例。
如果同一组件在多个页面表现不一致,优先按“数据—容器—加载—覆盖”的顺序逐项排除,而不是同时改多处。每次只改一个变量并记录结果,才能让验收样例真正可复现、可交接。