用途:为 @enigmatry/scss-foundation 库编写 SCSS 单元测试,测试框架为 sass-true v10 + Dart Sass + Jest。
运行方式:在 libs/scss-foundation 下执行 npm run test;在工作区根目录执行 npm run automated-tests(同时编译主题)。Jest 通过 shim.test.js 收集 tests/**/*.tests.scss。
文件约定:测试文件命名为 <module-name>.tests.scss,放在 libs/scss-foundation/tests/<category>/,需镜像 src/modules/<category>/ 结构,每个模块一个测试文件。
导入约定:使用 @use 'sass-true' as true;(新测试优先)或 @use 'sass-true/sass/true';,同一文件保持一致。以相对路径导入被测模块,如 @use '../../src/modules/typography/fonts';。若模块使用 $testing 守卫,需在 include 前设置 vars.$testing: true;。
测试结构:严格三级嵌套 describe → it → assert。describe 标签写 mixin/函数签名,it 标签用英文描述具体场景。
断言选择:expect 用于确定性输出的精确匹配;contains 用于错误注释或包含无关规则的大段输出。Sass 的 @error 在编译输出中表现为 CSS 注释,格式为 /* ERROR [mixin-name($params)]: */ 加原因,用 contains 断言。
可选参数:需覆盖默认值、命名参数子集、全部位置参数等组合。伪状态(如 &:hover)直接写在 expect 中,并在嵌套 & 选择器前加 stylelint-disable-next-line nesting-selector-no-missing-scoping-root。测试文件可按需在顶部添加文件级 stylelint 禁用注释。
新 mixin 覆盖清单:全参数正常路径、仅默认值、命名参数部分覆盖、错误/守卫路径、边界值(零、null、错误类型、越界数字)。