javascript-typescript-jest

от github

Лучшие практики тестирования Jest для проектов на JavaScript и TypeScript с мокированием, асинхронной обработкой и паттернами React. Организуйте тесты с описательными именами во вложенных блоках describe, используя файлы .test.ts / .test.js, размещенные рядом с исходным кодом или в директориях __tests__. Мокируйте внешние зависимости с помощью jest.mock(), jest.spyOn() и mockImplementation(), сбрасывая их между тестами для предотвращения утечки состояния. Обрабатывайте асинхронный код с помощью промисов, async/await и матчеров resolves/rejects; установите...

npx skills add https://github.com/github/awesome-copilot --skill javascript-typescript-jest

Test Structure

  • Name test files with .test.ts or .test.js suffix
  • Place test files next to the code they test or in a dedicated __tests__ directory
  • Use descriptive test names that explain the expected behavior
  • Use nested describe blocks to organize related tests
  • Follow the pattern: describe('Component/Function/Class', () => { it('should do something', () => {}) })

Effective Mocking

  • Mock external dependencies (APIs, databases, etc.) to isolate your tests
  • Use jest.mock() for module-level mocks
  • Use jest.spyOn() for specific function mocks
  • Use mockImplementation() or mockReturnValue() to define mock behavior
  • Reset mocks between tests with jest.resetAllMocks() in afterEach

Testing Async Code

  • Always return promises or use async/await syntax in tests
  • Use resolves/rejects matchers for promises
  • Set appropriate timeouts for slow tests with jest.setTimeout()

Snapshot Testing

  • Use snapshot tests for UI components or complex objects that change infrequently
  • Keep snapshots small and focused
  • Review snapshot changes carefully before committing

Testing React Components

  • Use React Testing Library over Enzyme for testing components
  • Test user behavior and component accessibility
  • Query elements by accessibility roles, labels, or text content
  • Use userEvent over fireEvent for more realistic user interactions

Common Jest Matchers

  • Basic: expect(value).toBe(expected), expect(value).toEqual(expected)
  • Truthiness: expect(value).toBeTruthy(), expect(value).toBeFalsy()
  • Numbers: expect(value).toBeGreaterThan(3), expect(value).toBeLessThanOrEqual(3)
  • Strings: expect(value).toMatch(/pattern/), expect(value).toContain('substring')
  • Arrays: expect(array).toContain(item), expect(array).toHaveLength(3)
  • Objects: expect(object).toHaveProperty('key', value)
  • Exceptions: expect(fn).toThrow(), expect(fn).toThrow(Error)
  • Mock functions: expect(mockFn).toHaveBeenCalled(), expect(mockFn).toHaveBeenCalledWith(arg1, arg2)

Больше skills от github

debugging-workflows
github
Руководство по отладке агентных рабочих процессов GitHub — анализ логов, аудит запусков и устранение неполадок
go-codemod
github
Реализация и тестирование Go-кодмодов для команды gh aw fix.
acreadiness-policy
github
Помочь пользователю выбрать, написать или применить политику AgentRC. Политики настраивают оценку готовности, отключая нерелевантные проверки, переопределяя влияние/уровень, задавая…
ai-ready
github
Делает любой репозиторий AI-ready — анализирует вашу кодовую базу и генерирует AGENTS.md, copilot-instructions.md, CI-воркфлоу, шаблоны issues и многое другое. Анализирует ваши PR-ревью…
create-oo-component-documentation
github
Создавать всестороннюю, стандартизированную документацию для объектно-ориентированных компонентов в соответствии с лучшими отраслевыми практиками и стандартами архитектурной документации.
dependabot
github
Dependabot — это встроенный инструмент управления зависимостями GitHub с тремя основными возможностями:
doublecheck
github
Трёхуровневый конвейер верификации для выходных данных ИИ. Извлекает проверяемые утверждения, находит подтверждающие или опровергающие источники через веб-поиск, проводит состязательную проверку…
foundry-agent-sync
github
Создание и синхронизация AI-агентов на основе промптов непосредственно в Azure AI Foundry через REST API из локального JSON-манифеста. В отличие от навыков-шаблонов, которые только…