用途
mocha-skill 是一个用于生成 Mocha 测试代码的 AI 技能,主要服务于 JavaScript 项目的单元测试与集成测试编写。当用户提到 "Mocha"、"Chai"、"sinon",或使用 describe/it 结构(而非 Jest)时触发。它帮助开发者按 Mocha 的惯用方式组织测试,并配合 Chai 做断言、Sinon 做模拟。
主要能力
该技能覆盖以下核心测试模式:
- 基础测试与 Chai 断言:使用
describe/it组织用例,通过beforeEach初始化被测对象。示例中展示了expect(calc.add(2, 3)).to.equal(5)以及断言抛错expect(() => calc.divide(10, 0)).to.throw('Division by zero')。 - Chai 断言写法:包括
to.equal、to.have.lengthOf、to.have.property、to.include、to.throw、to.deep.equal、to.deep.include等。 - Sinon 模拟:推荐使用
sinon.createSandbox()创建沙箱,在afterEach中sandbox.restore()恢复。示例展示了对 API 方法打 stub 并验证调用次数:sandbox.stub(api, 'get').resolves({ name: 'Alice' }),随后断言stub.calledOnce。 - 异步测试:支持 async/await 风格(
const data = await fetchData())以及回调 done 风格(it('callback style', (done) => {...}))。 - 反模式提示:列出常见问题及改进方式,例如遗漏
done()应改用 async/await 以避免测试挂起;不使用 sandbox 会导致 stub 泄漏,应使用sinon.createSandbox();在describe中使用箭头函数会影响this.timeout()的上下文,应改用普通函数。 - 快速参考命令:运行全部
npx mocha、监听npx mocha --watch、按名称过滤npx mocha --grep "login"、设置超时npx mocha --timeout 10000、递归执行npx mocha --recursive。
使用方式
安装依赖:
npm install mocha chai sinon --save-dev
随后按技能提供的模式编写测试文件,使用 describe / it 组织用例,Chai 做断言,Sinon 做 stub/spy。更深入的用法可参考 reference/playbook.md,其章节包括:
- Production Configuration(mocharc、NYC 覆盖率、TypeScript)
- Testing with Chai + Sinon(stub、spy、断言)
- Advanced Sinon Patterns(fake timers、nock HTTP、顺序执行)
- Async Patterns(Promise、await、callback、events)
- Hooks & Test Organization(生命周期、嵌套、grep 标签)
- Custom Reporters & Plugins(reporter 类、root hooks)
- Express/API Testing(Supertest 集成)
- CI/CD Integration(GitHub Actions、services)
- Debugging Quick-Reference(10 个常见问题)
- Best Practices Checklist(13 项)
适用场景
适用于使用 Mocha 作为测试框架的 JavaScript 项目,尤其是需要 Chai 断言与 Sinon 模拟配合的单元测试、异步测试、Express/API 测试以及 CI/CD 集成场景。
限制
资料未提供该技能的具体收费、价格、支持平台、运行环境要求或效果保证等信息,暂未提供。