L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

mocha-skill

mocha-skill

Generates Mocha tests in JavaScript with Chai assertions and Sinon mocking. Use when user mentions "Mocha", "Chai", "sinon", "describe/it (not Jest)". Triggers on: "Mocha", "Chai", "sinon", "mocha test".

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: mocha-skill description: > Generates Mocha tests in JavaScript with Chai assertions and Sinon mocking. Use when user mentions "Mocha", "Chai", "sinon", "describe/it (not Jest)". Triggers on: "Mocha", "Chai", "sinon", "mocha test". languages:

  • JavaScript
  • TypeScript category: unit-testing license: MIT metadata: author: TestMu AI version: "1.0"

Mocha Testing Skill

Core Patterns

Basic Test with 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 Assertions

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 Mocking

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;
  });
});

Async Testing

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();
  });
});

Anti-Patterns

BadGoodWhy
Missing done()Use async/awaitHanging tests
No sandboxsinon.createSandbox()Stubs leak
Arrow in describeRegular function for this.timeout()Context

Quick Reference

TaskCommand
Run allnpx mocha
Watchnpx mocha --watch
Grepnpx mocha --grep "login"
Timeoutnpx mocha --timeout 10000
Recursivenpx mocha --recursive

Setup: npm install mocha chai sinon --save-dev

Deep Patterns → reference/playbook.md

§SectionLines
1Production Configurationmocharc, NYC coverage, TypeScript
2Testing with Chai + SinonStubs, spies, assertions
3Advanced Sinon PatternsFake timers, nock HTTP, sequential
4Async PatternsPromise, await, callback, events
5Hooks & Test OrganizationLifecycle, nesting, grep tags
6Custom Reporters & PluginsReporter class, root hooks
7Express/API TestingSupertest integration
8CI/CD IntegrationGitHub Actions, services
9Debugging Quick-Reference10 common problems
10Best Practices Checklist13 items
Skills enregistrées