答案:用Ctrl+Shift+F搜索特定代码模式可定位影响可测试性的硬编码依赖与副作用。搜new Date(、localStorage.、Math.random(、document.querySelector(、require('fs')等,并排除node_modules和dist目录,避免噪音干扰。

VSCode 本身没有“为可测试性设计的全局搜索快捷键”——但你可以用现有搜索能力,快速定位影响可测试性的代码模式。
怎么搜出硬编码依赖(比如 new Date()、localStorage)
这类调用会让单元测试难以控制边界、无法复现。VSCode 的 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)是唯一入口,关键在搜索内容设计:
- 搜
new Date(,注意括号不加空格,避免漏掉new Date()和new Date(Date.now()) - 搜
localStorage.或sessionStorage.,加英文句点防止匹配到变量名含local的情况 - 搜
Math.random(,它让测试结果非确定,应封装成可注入的依赖 - 避免搜
Date这种泛词——会命中类型声明、注释、变量名,噪音太大
怎么搜出未解耦的 DOM 操作(阻碍纯函数测试)
直接操作 document 或 window 的代码,基本无法在 Node 环境跑单元测试。搜索时要抓典型副作用入口:
- 搜
document.querySelector(、document.getElementById(、document.createElement( - 搜
window.location(尤其是赋值语句,如window.location.href =) - 搜
addEventListener(,特别是绑定在全局对象上的,容易导致测试后状态残留 - 如果项目用了 React/Vue,优先搜
ref=或querySelector在组件逻辑中的使用,而非模板里——模板里是合理的
怎么搜出难 mock 的第三方模块调用(比如直接 require('fs'))
Node.js 环境下,同步读写文件、发 HTTP 请求等行为会让测试变慢甚至失败。搜索目标不是“所有 import”,而是“不可替代的顶层调用”:
- 搜
require('fs')、require('http')、require('https')—— 注意单引号,双引号场景另搜 - 搜
fs.readFileSync(、fs.writeFileSync(,比搜fs.更精准,排除类型定义干扰 - 对 ESM 项目,搜
import.*?from ['"]fs['"](正则模式开启),但 VSCode 默认不支持跨行正则,建议先关掉“Match Case”和“Whole Word”,再手动确认上下文 - 不要搜
axios或fetch全局——它们本就该被 mock,重点看是否在测试 setup 外直接调用,比如await axios.get('/api')出现在工具函数里
为什么不能只靠快捷键,还得配合搜索策略
可测试性问题本质是架构与职责问题,不是文本匹配问题。Ctrl+Shift+F 只是放大镜,不是诊断仪。你搜到 new Date(),不代表必须删——可能只需抽成工厂函数并注入;搜到 document.body,也不代表立刻改,得看它是否属于渲染副作用边界内。
最容易被忽略的是:搜索范围默认包含 node_modules 和 dist,这会严重拖慢响应、淹没结果。务必在搜索框右上角点击文件夹图标,排除这些目录,再勾选“Only search in workspace”。


















