본문으로 건너뛰기

자바스크립트 팀을 위한 Jest 단위 테스트 실용 가이드

Jest 단위 테스트의 설정부터 CI까지 실습하는 튜토리얼입니다. mocks, TypeScript, coverage, 그리고 자바스크립트 및 Capacitor 앱에 대한 최적의 관행을 다룹니다.

JavaScript 팀을 위한 Jest 단위 테스트: 실용 가이드

Capacitor 릴리스는 종료 시점의 단위 테스트를 통과하고도 결제 계산서의 오류,陈舊된 기능 플래그, 플랫폼 특정 branch를 배포할 수 있습니다. 실패는 종종 더 이전에 시작됩니다: 단위 테스트는 이전 동작을 반영하고, 모킹은 변경된 의존성을 숨기거나, CI는 개발자의 기기와 다른 환경에서 실행됩니다. 버그가 전화나 Electron 데스크톱 빌드로 도달하기까지, 테스트 스위트는 신뢰를 제공하지 않습니다.

그렇기 때문에 Jest 단위 테스트 실용적인 질문은 workflow 의 결정에 대한 살아있는 workflow 인 것이며, 단순히 실행 명령어만으로는 아닙니다. 유용한 질문은 다음과 같습니다: 개발자가 신뢰할 수 있는 실패의 속도, 격리해야 하는 경계, CI에서 포함해야 하는 커버리지, Jest가 프로젝트의 모듈 시스템과 feedback 기대에 맞는지 여부. 이 가이드는 Node 서비스, 웹 애플리케이션, Capacitor 프로젝트, Electron 앱에 걸쳐 이러한 결정에 초점을 맞추고 있습니다. 더 광범위한 배포 흐름에서 자동화된 체크가 어디에 위치하는지에 대한 더 자세한 정보는 자동화된 테스트: 현대 소프트웨어 배포 흐름.

Jest가 여전히 중요하다는 이유를 설명하는 infographic.

목차

2026년 Jest 단위 테스트가 여전히 중요하다

Jest는 단순히 진술 문법을 해결하는 것 이상으로 팀에게 반복 가능한 비즈니스 논리 검증 장소, 의존성 경계 제어, 커버리지 기대치를 강제하는 장소, 그리고 사용자에게 모바일 또는 데스크톱 패키지를 전달하기 전에 실행하는 체크를 제공한다. 이 워크플로우는 브라우저 셸, Capacitor WebView, Electron 렌더러, 그리고 플랫폼 API 주변에 다르지만 동일한 자바스크립트 동작이 실행되는 Node 프로세스에서 중요하다.

Jest의 채택에도 역사적인 가치가 있습니다. Facebook은 JavaScript 채팅 재작성용으로 만들었고 2011년 오픈 소스화했습니다. 2011 자바스크립트 채팅 재작성에 대한 목적을 위해 오픈 소스화했습니다. 2014OpenJS Foundation은 2022년까지 38,000 개의 __CAPGO_KEEP_0__ 별과 17 만의 주간 다운로드를 기록했습니다. 38,000 GitHub 개의 별점과 2022년까지 매주 170만 다운로드OpenJS Foundation의 Jest 프로젝트 역사 43,000 개의 별점과 2024년까지 매주 21백만 다운로드 (OpenJS 재단의 Jest 프로젝트 역사실용적인 규칙:

Jest를 유지할 때 생태계가 이주 위험이 줄어들고, 테스트 스위트가 개발자에게 신뢰할 수 있는 feedback를 제공할 때, Jest를 유지하세요. runner 자체가 일일 병목 현상이 된 경우, 다른 runner를 고려하세요.

이 가이드의 나머지 부분은 이 워크플로우를 따릅니다. Jest를 환경에 따라 구성하고, 동작에 초점을 맞춘 테스트를 작성하고, 유지 관리 가능한 mocks를 선택하고, CI와 커버리지에 연결하고, 대규모 환경에서 불안정성을 줄이고, 의도적으로 유지 또는 Switch하기 위한 결정을 내립니다. Jest의 채택에도 역사적인 가치가 있습니다. Facebook은 JavaScript 채팅 재작성용으로 만들었고 2011년 오픈 소스화했습니다.

Jest는 Facebook의 내부 프로젝트였습니다. Facebook은 2011년 JavaScript 채팅 재작성용으로 만들었고 2011년 오픈 소스화했습니다.

환경과 플랫폼에 걸쳐 Jest를 설치하고 구성하는 방법

실행 환경에 맞는 가장 작은 구성으로 시작하세요. Node 서비스는 일반적으로 Jest의 기본 환경과 테스트 스크립트가 필요합니다. 브라우저에 접근하는 Capacitor 또는 Electron 모듈은 DOM-like 글로벌 변수가 필요하며, TypeScript는 디버깅, 모듈 호환성 및 시작 동작에 영향을 미치는 변환 결정이 필요합니다.

plain Node 프로젝트의 경우, 패키지를 초기화하고 Jest를 개발 의존성으로 설치하세요:

npm init -y
npm install --save-dev jest
npx jest --init

생성된 구성은 시작점이 아닌 디자인 결론이 아닙니다. 테스트 환경, 변환, 모듈 별칭 및 설정 파일을 검토하고 커밋하기 전에 확인하세요.

TypeScript 변환을 의도적으로 선택하세요

ts-jest TypeScript 컴파일러 동작에 이미 의존하는 저장소가 있는 경우, 개발자들은 친숙한 디아그노스틱을 원할 때 편리합니다. @swc/jest 변환 속도가 중요하고 타입 체크가 별도의 명령으로 실행되는 경우, 이 옵션은 유용합니다. 그러나 이 옵션은 타입 체커를 대체하지 않으며 ESM-heavy 패키지는 변환기와 상관없이 추가 구성이 필요할 수 있습니다.

Option Node TypeScript Capacitor/Electron
Environment node node 또는 프로젝트별 jsdom DOM-facing code
변환 일반적으로 없음 ts-jest 또는 @swc/jest DOM-facing __CAPGO_KEEP_0__
변환 일반적으로 없음 또는 일반적으로 없음
일반적으로 없음 일반적으로 없음 jest.config.ts setupFilesAfterEnvmocks, 브라우저 API

A TypeScript 설정을 사용하는 ts-jest 다음과 같은 형태가 될 수 있습니다:

import type { Config } from 'jest'

const config: Config = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
  clearMocks: true,
  collectCoverageFrom: ['src/**/*.{ts,tsx}'],
}

export default config

바벨 기반 자바스크립트 또는 혼합 저장소의 경우 바벨 파일을 명시적으로 유지하세요:

module.exports = {
  presets: [
    ['@babel/preset-env', { targets: { node: 'current' } }],
    '@babel/preset-typescript',
  ],
}

브라우저 shim을 code에만 추가하십시오

Capacitor와 Electron 테스트는 자주 code을 임포트합니다. 이 code은 window.matchMedia 또는 IntersectionObservercontext

Object.defineProperty(window, 'matchMedia', {
  writable: true,
  value: (query: string) => ({
    matches: false,
    media: query,
    onchange: null,
    addListener: () => {},
    removeListener: () => {},
    addEventListener: () => {},
    removeEventListener: () => {},
    dispatchEvent: () => false,
  }),
})

class MockIntersectionObserver {
  observe() {}
  unobserve() {}
  disconnect() {}
}

Object.defineProperty(window, 'IntersectionObserver', {
  writable: true,
  value: MockIntersectionObserver,
})

If an ESM-only dependency fails during collection, inspect __CAPGO_KEEP_0__. transformIgnorePatterns and the package’s published format. Capacitor plugins can expose this problem when Jest ignores a dependency that still needs transformation. Jest’s newer releases have improved startup and memory behavior, but watch feedback can still trail ESM-focused alternatives in large projects (ESM 전용 의존성이 수집 중에 실패하는 경우). Treat experimentalVMModules __CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요.

__CAPGO_KEEP_0__’s unit testing guide for JavaScript Capgo의 자바스크립트 단위 테스트 가이드를 사용하세요.__CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요.

npx jest --runInBand

__CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요.

__CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요.

__CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요. __CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요. __CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요.

__CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요.

export function calculateInvoiceTotal(
  subtotal: number,
  taxRate: number,
  discountRate: number,
): number {
  const discounted = subtotal * (1 - discountRate)
  return Math.round(discounted * (1 + taxRate) * 100) / 100
}

__CAPGO_KEEP_0__의 자바스크립트 단위 테스트 가이드를 사용하세요. discounted:

import { calculateInvoiceTotal } from './calculateInvoiceTotal'

describe('calculateInvoiceTotal', () => {
  it('applies percentage discount before tax', () => {
    const subtotal = 100
    const taxRate = 0.2
    const discountRate = 0.1

    const total = calculateInvoiceTotal(subtotal, taxRate, discountRate)

    expect(total).toBe(108)
  })

  it('rounds the final amount to currency precision', () => {
    const total = calculateInvoiceTotal(19.99, 0.2, 0)

    expect(total).toBe(23.99)
  })
})

Each it 이러한 테스트는 내부적으로 계산을 변경하더라도 계약을 유지하는 경우 여전히 유용해야 합니다.

소프트웨어 개발에서 신뢰할 수 있는 단위 테스트를 작성하는 데 필요한 네 가지 필수 단계를 요약한 목록 그래픽입니다.

Async 테스트도 동일한 discipline가 필요합니다. Jest의 resolves 그리고 rejects 기대하는 약속 결과를 명확하게 표현하세요:

it('returns an invoice from the API', async () => {
  await expect(fetchInvoice('invoice-123')).resolves.toMatchObject({
    id: 'invoice-123',
  })
})

it('rejects when the invoice is missing', async () => {
  await expect(fetchInvoice('missing')).rejects.toThrow('Invoice not found')
})

위험한 실수는 기대하는 거부를 기다리거나 반환하지 않고 만드는 것입니다. Jest에 초점을 맞춘 지침은 잊어버린 await 또는 return false positive를 일으키는 statement를 원인으로 삼고 테스트가 통과하는 경고 없이 테스트가 통과하는 경우를 말합니다.불안정한 자신감을 생산하는 세 가지 습관을 피하세요:개인 helper를 테스트하세요:

async 테스트도 동일한 discipline이 필요합니다. Jest의

  • 기대하는 약속 결과를 명확하게 표현하세요: exported 동작을 테스트하는 것은 helper가 의미 있는 공공 경계를 나타내지 않는 경우입니다.
  • 내부 상태를 확인하는 경우: 반환된 값, 발생한 이벤트, 영구적으로 기록된 레코드 또는 가시적인 출력을 선호합니다.
  • call assertions를 과도하게 사용하는 경우: toHaveBeenCalled() alone은 거의 NOTHING을 말합니다. 관련된 인수와 결과 동작을 확인하세요.

PR 체크리스트는 짧을 수 있습니다:

  • 각 테스트가 하나의 동작을 커버하는지 확인하세요.
  • 테스트가 Arrange, Act, Assert를 따르는지 확인하세요.
  • 비동기적인 기대치를 기다리는지 확인하세요.
  • 의존성을 명확한 경계에서만 모킹하는지 확인하세요.
  • 테스트가 내부 리팩토링에 살아남는지 확인하세요.

컴포넌트에 특정한 예제의 경우, Capgo의 React 단위 테스트 가이드 __CAPGO_KEEP_0__의 React 단위 테스트 가이드

실제로 확장되는 모킹 전략

실제로 확장되는 모킹 전략 jest.fn() can be exactly right for a callback. A module replacement can isolate an SDK. A network interceptor can preserve more of the application’s real request behavior. The choice should follow the seam you’re testing.

Consider a payment validator that calls a Stripe SDK, records an audit event, and reaches an HTTP risk service. A focused unit test might spy on the logger, replace the payment SDK, and intercept the risk request. Each technique controls a different boundary.

Strategy 설치 비용 Strategy 전략 Setup cost
jest.fn() 설정 비용 jest.spyOn() 낮음 집중 지역에서 낮음 콜백, 로거, 주입 서비스
jest.mock() 중간 낮음에서 중간 빠르게 성장할 수 있음 비용이 많이 드는 SDK, 모듈
MSW 중간 HTTP 경계에서 높음 중앙화 요청 동작, 오류, 응답 계약

지역적 결정에 대한 수동 스파이

의존성이 이미 주입되었을 때 테스트가 관찰하거나 제어해야 하는 한 인터랙션에 스파이를 사용하세요:

const audit = {
  record: jest.fn(),
}

const result = await validatePayment(input, {
  paymentClient,
  audit,
})

expect(audit.record).toHaveBeenCalledWith(
  expect.objectContaining({ event: 'payment.validated' }),
)
expect(result.status).toBe('approved')

테스트 케이스 사이에 상태를 초기화하세요. 공유 상태는 Jest 실패의 흔한 원인입니다. 지침은 mock 클리어링과 함께 combination하는 것을 권장합니다. 이를 통해 호출 횟수와 상태 누출을 방지할 수 있습니다 ( beforeEach Jest 단위 테스트 마스터중량급 SDK의 모듈 스파이).

SDK 중량급 라이브러리 모의 객체

응용 프로그램이 반환한 값에 대한 테스트가 여전히 주어야 합니다. 의미 있는 결과가 없는 __CAPGO_KEEP_0__ 호출 확인은 오직 mock이 구성된 것을 증명할 뿐입니다.

jest.mock('stripe', () => ({
  payments: {
    authorize: jest.fn(),
  },
}))

The test should still assert the value returned by the application. A passing SDK call assertion without a meaningful result can prove only that the mock was configured.

요청 생성, 응답 파싱, 재시도, 또는 오류 변환을 소유하는 __CAPGO_KEEP_0__에서 MSW를 사용하여 HTTP layer를 캡처하세요. 요청 경로를 유지하면서:

MSW는 요청 생성, 응답 파싱, 재시도 또는 오류 변환을 위한 code에 대한 HTTP Layer를 가로채면서 요청 경로를 보존할 수 있습니다.

server.use(
  http.post('/risk/check', async () => {
    return HttpResponse.json({ decision: 'review' })
  }),
)

이것은 낮은 수준의 mock보다 더 높은 신뢰도를 제공합니다. fetch 각 테스트에서 호출을 호출하세요. 또한 Node 및 브라우저와 같은 환경에서 응답 시나리오를 더 쉽게 이름付け하고 재사용할 수 있습니다.

이면을 mock하세요, 이면 자체를 mock하지 마세요.

테스트가 통과하는 동안 통합 연결이 깨진 경우 오버 모킹이 테스트를 생성합니다. 반면, 언더 모킹은 실제 네트워크, 파일 시스템, 클록, 데이터베이스를 단위 테스트에 가져와 느리고 비결정론적인 스위트를 생성합니다. 순수 논리를 모든 I/O에서 자유롭게하고 then 경계 검증을 계약 또는 통합 테스트로 이동하여 인터페이스가 중요할 때 경계를 검증하세요.

Jest를 CI 및 Coverage Gates와 통합하는 방법

CI는 두 가지 다른 질문에 답해야 합니다. 첫 번째로, 빠른 단위 스위트는 안전하지 않은 변경을 거부합니까? 두 번째로, 느린 통합 검사에서는 중요한 경계가 여전히 작동합니까? 모든 테스트를 하나의 비분명한 명령으로 넣으면 feedback가 더 어려워지고 개발자가 스위트를 무시하게 됩니다.

A GitHub Actions 워크플로우는 Node 런타임을 고정하고, 의존성 캐싱을 위해 lockfile를 사용하고, Jest의 CI 모드에서 단위 검사를 실행할 수 있습니다.

name: test

on:
  pull_request:
  push:

jobs:
  unit:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [20, 22]
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
          cache: npm
          cache-dependency-path: package-lock.json

      - run: npm ci
      - run: npm run test:unit, --ci --coverage

      - uses: actions/upload-artifact@v4
        with:
          name: coverage-${{ matrix.node }}
          path: coverage/

패키지 스크립트는 빠른 테스트와 통합 작업을 분리할 수 있습니다.

{
  "scripts": {
    "test:unit": "jest --runInBand tests/unit",
    "test:integration": "jest --runInBand tests/integration"
  }
}

위치한 숫자 대신 위험을 반영하는 커버리지 임계값을 사용하세요.

module.exports = {
  collectCoverageFrom: ['src/**/*.{js,ts,tsx}'],
  coverageThreshold: {
    global: {
      branches: 70,
      functions: 80,
      lines: 80,
      statements: 80
    }
  }
}

이 값들은 예시로, 실제 표준이 아닌 구성입니다. 실제 바닥을 저장소의 현재 기준선에서 설정하고, 팀이 의미 있는 커버리지를 추가할 때 높이세요. 엄격한 게이트는 생성된 또는 낮은 위험이 있는 code를 측정하여 급한 수정을 막을 수 있습니다. 느슨한 게이트는 중요한 경로가 무시되는 것을 허용할 수 있습니다.

https://docs.github.com/assets/images/help/repository/actions-illustration.png

대형 저장소의 경우, 테스트 격리 상태가 안정적일 때만 매트릭스 기반 샤딩을 사용하십시오. 각 샤드는 자신의 보고서에 명확한 소유권을 가지고 있어야 하며, 최종 상태는 pull request에서 실패를 표시하는 대신 로그에 묻지 않도록 해야 합니다. 팀은 또한 HTML 커버리지를 아티팩트로 업로드하고 Codecov 또는 Coveralls에 데이터를 게시할 수 있습니다. 단, 서비스가 보고서를 올바르게 병합하도록 구성되어 있어야 합니다. lcov 읽기

CI 운영 규칙 워크플로우 디자인과 함께 사용하십시오. 특히 여러 애플리케이션에서 하나의 저장소에 공유하는 경우 __CAPGO_KEEP_0__의 CI/CD 통합 테스트 지침이 유용합니다. 테스트 상태가 모바일 빌드 및 릴리즈 자동화와 연결되어야 할 때입니다. alongside workflow design, 특히 여러 애플리케이션 하나의 저장소에서 공유하는 경우에 특히 유용합니다. Capgo’s CI/CD 통합 테스트 지침 테스트 상태가 모바일 빌드 및 릴리스 자동화와 연결되어야 하는 경우 유용합니다.

Layer를 사용하여 Jest가 모든 것을 소유하지 않도록 하십시오

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

각 테스트层에 좁은 작업을 부여하십시오:

  • 순수 단위 테스트: 네트워크 또는 파일 시스템 접근이 없는 경우 결정론적 계산, 파서, 리듀서, 정책 결정 및 오류 매핑을 확인하십시오.
  • 계약 테스트: 모듈 경계, 어댑터 형태, 요청 페이로드 및 플러그인 대면 동작을 확인하십시오.
  • 얇은 E2E 커버리지: 실제 사용자 여행을 몇 가지로 제한하여 웹, Capacitor, 또는 Electron 셸에서 실행하십시오.

이 배치는 단위 테스트를 빠르게 유지하면서 mocks가 생산을 대표하지 않도록 경계를 확인합니다. 또한 일반적인 모바일 실패 모드를 피하기 위해 비용이 많이 드는 UI 경로를 통해 전체 네이티브 업데이트거나 권한 흐름을 테스트하는 대신 JavaScript 결정 논리를 분리하는 것이 좋습니다.

한 가지 동작을 유지하십시오: it() 이러한 경우 실패가 진단 가능합니다. 호출 순서를 확인하십시오만 순서가 계약에 속한다면. 저장된 레코드를 노출하는 메서드를 가진 인 메모리 저장소와 같은 쿼리 가능한 가짜는 hardcoded 반환 값을 사용하는 것보다 더 좋은 feedback를 제공합니다.

통과 테스트는 사용자 또는 이웃 모듈이 오늘의 code이 어떻게 구성되어 있는지에 대해 의존할 수 있는 것을 설명해야 합니다.

반복적인 테스트 건강 검진을 예약하십시오. 불안정한 테스트, 폐쇄된 스냅샷, 중복된 설정 및 mocks가 더 이상 생산 동작과 일치하지 않는 경우 검토하십시오. 낮은 가치의 테스트를 삭제하는 것이 더 안전할 수 있습니다.

CI 도구판에서 불안정성을 추적하세요. 테스트가 실패하는 경우 code 변경이 없다면, 실패 증거를 보존하고 공유 상태를 분리하고 시간과 난수를 제어하고, 실행자가 과부하일 때 워커 압력을 줄입니다. CI 머신에서 측정치를 기반으로 워커 한도를 설정하세요. 추가 병렬성은 경쟁을 증가시키고 스위트가 느려질 수 있으므로. 워커 설정은 실행자 구성과 함께 문서화하여 미래의 변경이 의도적으로 유지되도록 하세요.

팀의 결정 프레임워크 및 다음 단계

Jest는 이미 안정적인 스위트,established transforms 및 mocks, 그리고 팀이 실험적인 실행자보다 마이그레이션 안전성을 중요시하는 경우에 sound한 기본값입니다. 새로운 프로젝트가 ESM-first 인 경우, 네이티브 피드백이 우선순위인 경우, 또는 watch-mode 재생이 개발을 중단하는 경우 비교 대안을 고려하세요. Benchmarks는 저장소 아키텍처 및 트랜스포머 작업에 따라 크게 달라질 수 있으므로, 비교 결과를 방향성만으로 간주하세요.

사용할 기준을 네 가지로 설정하세요:

  1. 기존 도구: Jest를 유지할 때, 구성, 테스트 유틸리티 및 CI convention이 이미 작동하는 경우.
  2. 모듈 형식: ESM-Only 의존성이 반복적으로 예외나 커스텀 워크아라운드가 필요할 때, 실행자를 다시 고려하세요.
  3. 피드백 기대: 실제 저장소에서 대표적인 watch 변경을 측정하세요. 비어있는 데모 프로젝트에서 측정하지 마세요.
  4. 팀 능력: 팀이 구성하고 디버그할 수 있는 익숙한 실행자가 더 좋은 결과를 내는 경우가 많습니다.

Vitest, Node의 내장 테스트 러너 및 Playwright는 서로 다른 요구 사항을 해결합니다. Playwright는 주로 브라우저 E2E 커버리지에 속합니다. Node의 러너는 집중된 Node 서비스에 적합합니다. Vitest는 일반적으로 초안 ESM 및 Vite-oriented 프로젝트에 적합합니다. Jest는 성숙한 모킹, 변환 및 기존 CI 규칙에 의존하는 팀에 적합합니다. 신뢰할 수 있는 경계를 유지하면서 feedback가 사용할 수 있는지 선택하세요.

실용적인 90일 리셋

1월, 스위트를 감사합니다. 유실된 테스트, 죽은 스냅샷, 구현 결합된 어설션 및 실제 I/O를 수행하는 테스트에 대한 주인에게 assign하세요. 결과는 삭제, 수리 및 통합 커버리지가 필요한 경계를 기록한 작성 목록이여야 합니다.

2월, 디자인을 표준화하세요. 공유 테스트 유틸리티를 추가하고, 모킹 규칙을 문서화하고, 중요한 패키지에 대한 커버리지 보고를 도입하세요. 게이트가 있는 패키지와, 집중된 테스트가 부족한 동작이 있는 패키지를 기록하세요. baseline은 검토할 수 있어야 합니다.

3월, 배포를 안정화하세요. CI 워커를 조정하고, 단위 및 통합 작업을 분리하고, 위험 기반 커버리지 Floor를 설정하고, 규칙을 문서화하세요. pipeline은 작동 가능한 실패를 보고해야 하며, 새로운 테스트는 동일한 경계와 모킹 규칙을 따르야 합니다. TESTING.mdThe pipeline should report actionable failures, while new tests follow the same boundaries and mocking rules.

정기적으로 스위트를 검토하세요. 사용되지 않는 스냅샷, 중복된 설정, mocks를 제거하고, 더 이상 프로덕션 동작과 일치하지 않는 mocks를 제거하세요. 낮은 가치의 테스트는 다른 어설션으로 강화하는 것보다 삭제하는 것이 더 안전할 수 있습니다. CI에서 불안정한 실패를 추적하고, 증거를 보존하고, 공유된 상태를 분리하고, 시간과 난수를 제어하고, 경쟁이 나타날 때 워커 압력을 줄이세요. CI 머신에서 측정한 워커 제한을 설정하고, 런너 구성과 함께 문서화하세요.

이러한 관행은 더 광범위한 소프트웨어 개발 최선의 관행 과 함께 속합니다. Capacitor 또는 Electron 사용자를 위한 테스트된 자바스크립트修정을 목표로 하는 경우, Capgo는 목표 채널을 통해 signed JavaScript, CSS, 구성, 및 자산 번들을 전달할 수 있습니다. rollback 보호와 릴리스 관찰성을 제공하며, 매 웹层 수정에 대해 저장소 검토가 필요하지 않습니다.

Capacitor 또는 Electron 애플리케이션을 배포하는 팀이 있다면, Capacitor를 방문하여 Capgo 컨트롤된 채널, 스테이지드 롤아웃, 및 롤백 보호를 갖춘 live JavaScript 업데이트가 어떻게 작동하는지 평가하세요. 시작하기 위해 Jest 경계와 CI 게이트를 문서화하고, 다음으로 Capgo가 수정이 필요한지에 따라 Capgo가 회복 경로에서 어디에 속하는지 정의하세요.

Capacitor 앱에 대한 즉시 업데이트

웹 레이어 버그가 실시간으로 작동하는 경우 Capgo을 통해 픽스를 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 마세요. 사용자는 배경에서 업데이트를 받으면서 네이티브 변경은 일반적인 검토 경로에 남아 있습니다.

마틴의 인간 지원

시작하기

최신 뉴스

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.