AgentSkillsCN

Mock Patterns Skill

模拟模式技能

SKILL.md

Mock Patterns Skill

Purpose

Mocking strategies for testing Firebase, Context API, and services.

Context Mocking

javascript
jest.mock('../../contexts/AuthContext', () => ({
  useAuth: () => ({
    user: { uid: 'test-user', email: 'test@example.com' },
    login: jest.fn(),
    logout: jest.fn()
  })
}));

Firebase Mocking

javascript
jest.mock('firebase/firestore', () => ({
  doc: jest.fn(),
  getDoc: jest.fn().mockResolvedValue({
    exists: () => true,
    data: () => ({ hatao: ['tune1'] })
  }),
  setDoc: jest.fn(),
  updateDoc: jest.fn()
}));

Service Mocking

javascript
jest.mock('../../services/tunesService', () => ({
  getTunes: jest.fn().mockResolvedValue([mockTune1, mockTune2]),
  searchTunes: jest.fn().mockReturnValue([mockTune1])
}));

Best Practices

✅ Clear mocks between tests ✅ Mock external dependencies only ✅ Use mockResolvedValue for async ❌ Don't mock internal components ❌ Don't forget to reset mocks