Skip to content

Testing Framework Integration ​

Since 1.6.0

Types for testing frameworks and assertions.

Overview ​

Testing Framework Integration provides types for building test suites, assertions, mocks, and coverage reporting. It supports unit testing, integration testing, benchmarking, and snapshot testing patterns.

This module enables building type-safe testing utilities with proper constraints for test cases, assertions, and results.

Basic Usage ​

typescript
import type { TestSuite, TestCase, Mock, Spy, Coverage, Benchmark, Assertion } from 'uni-types'

// Test suite definition
type UserTests = TestSuite<{
  name: 'User'
  tests: TestCase[]
}>

// Mock configuration
type UserServiceMock = Mock<UserService>

// Coverage configuration
type CoverageConfig = Coverage<{
  lines: number
  functions: number
  branches: number
}>

Key Types ​

TestSuite ​

Test suite type.

typescript
type TestSuite<T = unknown> = {
  name: string
  tests: TestCase<T>[]
  setup?: () => void
  teardown?: () => void
}

TestCase ​

Test case type.

typescript
type TestCase<T = unknown> = {
  name: string
  fn: () => void | Promise<void>
  skip?: boolean
  only?: boolean
  timeout?: number
  config?: T
}

TestResultType ​

Test result types.

typescript
type TestResultType = 'passed' | 'failed' | 'skipped' | 'pending' | 'timeout'

Assertion ​

Assertion type.

typescript
type Assertion<T = unknown> = {
  actual: T
  expected: T
  pass: boolean
  message?: string
}

Mock ​

Mock type for testing.

typescript
type Mock<T extends (...args: unknown[]) => unknown> = {
  mockImplementation: (fn: T) => void
  mockReturnValue: (value: ReturnType<T>) => void
  mockResolvedValue: (value: ReturnType<T>) => void
  calls: MockCall<T>[]
}

Spy ​

Spy type for function observation.

typescript
type Spy<T extends (...args: unknown[]) => unknown> = {
  calls: unknown[][]
  results: unknown[]
  called: boolean
  callCount: number
}

Coverage ​

Coverage configuration type.

typescript
type Coverage = {
  lines: number
  functions: number
  branches: number
  statements: number
}

CoverageReport ​

Coverage report type.

typescript
type CoverageReport<T = unknown> = {
  total: Coverage
  files: FileCoverage[]
  thresholds: CoverageThreshold
  report: T
}

Snapshot ​

Snapshot type for snapshot testing.

typescript
type Snapshot<T = unknown> = {
  name: string
  data: T
  createdAt: Date
  updatedAt: Date
}

Benchmark ​

Benchmark type for performance testing.

typescript
type Benchmark<T = unknown> = {
  name: string
  fn: () => T
  iterations: number
  warmup?: number
}

BenchmarkResult ​

Benchmark result type.

typescript
type BenchmarkResult<T = unknown> = {
  name: string
  iterations: number
  totalTime: number
  averageTime: number
  minTime: number
  maxTime: number
  statistics: BenchmarkStatistics
}

Released under the MIT License.