mcpField
M
mocha-skill

mocha-skill

github.com/lambdatest测试与质量384228 次安装2 周前更新
代码仓库

关于 mocha-skill

介绍使用 Mocha 编写和运行测试的技能指南,包含 Chai 断言、Sinon 模拟、异步测试、常用命令及测试组织实践。

主要功能

  1. 01Mocha 测试结构与钩子
  2. 02Chai 断言
  3. 03Sinon 模拟与沙箱
  4. 04Promise 和回调测试
  5. 05运行、监视与筛选命令

适用场景

  1. 01测试 JavaScript 函数和服务
  2. 02在测试期间替换依赖
  3. 03检查异步代码和回调

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lambdatest/agent-skills --skill mocha-skill

安装后在 Claude Code 中输入/mocha-skill确认已加载。

附带文件reference/advanced-patterns.mdreference/playbook.md

详细介绍

Mocha 测试技能

核心模式

使用 Chai 编写基础测试
const { expect } = require('chai');

describe('Calculator', () => {
  let calc;
  beforeEach(() => { calc = new Calculator(); });

  it('should add two numbers', () => {
    expect(calc.add(2, 3)).to.equal(5);
  });

  it('should throw on divide by zero', () => {
    expect(() => calc.divide(10, 0)).to.throw('Division by zero');
  });
});
Chai 断言
expect(value).to.equal(5);
expect(arr).to.have.lengthOf(3);
expect(obj).to.have.property('name');
expect(str).to.include('hello');
expect(fn).to.throw(Error);
expect(arr).to.deep.equal([1, 2, 3]);
expect(obj).to.deep.include({ name: 'Alice' });
使用 Sinon 进行模拟
const sinon = require('sinon');

describe('UserService', () => {
  let sandbox;
  beforeEach(() => { sandbox = sinon.createSandbox(); });
  afterEach(() => { sandbox.restore(); });

  it('fetches user from API', async () => {
    const stub = sandbox.stub(api, 'get').resolves({ name: 'Alice' });
    const user = await userService.getUser(1);
    expect(user.name).to.equal('Alice');
    expect(stub.calledOnce).to.be.true;
  });
});
异步测试
it('should fetch data', async () => {
  const data = await fetchData();
  expect(data).to.have.property('id');
});

it('callback style', (done) => {
  fetchData((err, data) => {
    expect(err).to.be.null;
    done();
  });
});
反模式
不佳做法良好做法原因
缺少 done()使用 async/await测试会一直挂起
不使用沙箱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

深入模式 → reference/playbook.md

§章节行数
1生产环境配置mocharc、NYC 覆盖率、TypeScript
2使用 Chai + Sinon 进行测试存根、间谍、断言
3高级 Sinon 模式虚拟计时器、nock HTTP、顺序调用
4异步模式Promise、await、回调、事件
5钩子与测试组织生命周期、嵌套、grep 标签
6自定义报告器与插件报告器类、根钩子
7Express/API 测试Supertest 集成
8CI/CD 集成GitHub Actions、服务
9调试速查10 个常见问题
10最佳实践清单13 项

评论

支持 Markdown