<< All versions
Setup:
Deep Patterns →
Skill v1.0.1
currentAutomated scan100/100lambdatest/agent-skills/mocha-skill
1 files
──Details
PublishedAugust 9, 2026 at 09:09 PM
Content Hashsha256:92f59d46e4b22422...
Git SHA0491a3a29aa1
Bump Typepatch
──Files
Files (1 file, 3.0 KB)
SKILL.md3.0 KBactive
SKILL.md · 122 lines · 3.0 KB
version: "1.0.1" 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
javascript
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
javascript
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
javascript
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
javascript
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
| Bad | Good | Why | |
|---|---|---|---|
Missing done() | Use async/await | Hanging tests | |
| No sandbox | sinon.createSandbox() | Stubs leak | |
Arrow in describe | Regular function for this.timeout() | Context |
Quick Reference
| Task | Command | |
|---|---|---|
| Run all | npx mocha | |
| Watch | npx mocha --watch | |
| Grep | npx mocha --grep "login" | |
| Timeout | npx mocha --timeout 10000 | |
| Recursive | npx mocha --recursive |
Setup: npm install mocha chai sinon --save-dev
Deep Patterns → reference/playbook.md
| § | Section | Lines | |
|---|---|---|---|
| 1 | Production Configuration | mocharc, NYC coverage, TypeScript | |
| 2 | Testing with Chai + Sinon | Stubs, spies, assertions | |
| 3 | Advanced Sinon Patterns | Fake timers, nock HTTP, sequential | |
| 4 | Async Patterns | Promise, await, callback, events | |
| 5 | Hooks & Test Organization | Lifecycle, nesting, grep tags | |
| 6 | Custom Reporters & Plugins | Reporter class, root hooks | |
| 7 | Express/API Testing | Supertest integration | |
| 8 | CI/CD Integration | GitHub Actions, services | |
| 9 | Debugging Quick-Reference | 10 common problems | |
| 10 | Best Practices Checklist | 13 items |