← 모든 도구 보기
개발·오류 해결

단위 테스트 작성

코드를 넣으면 핵심 동작과 경계를 확인할 테스트 초안을 만듭니다.

먼저 입력할 내용테스트할 최소 코드
받을 수 있는 결과검사 목록 · 테스트 코드 · 실행 방법 · 검증 한계
의견 보내기
의견 보내기

개인정보·비밀번호·API 키는 빼고 적어주세요. 의견은 공개되지 않습니다.

다른 AI에서도 이어서 활용이 작업의 프롬프트 받기

결과를 만들지 않아도 받을 수 있어요. 입력 전에는 채워 쓰는 템플릿을, 입력 후에는 작성한 내용을 반영해 드립니다.

바로 만들어보기

테스트할 최소 코드만 먼저 알려주세요

코드를 넣으면 핵심 동작과 경계를 확인할 테스트 초안을 만듭니다.

이용량 확인 중

01 AI에게 알려줄 내용

이 내용만 입력해도 초안을 만들 수 있어요.
결과를 더 맞춤화하기 (선택)
알고 있는 내용만 더하면 결과를 맞춤화할 수 있어요.
알고 있는 내용만 더하면 결과를 맞춤화할 수 있어요.
알고 있는 내용만 더하면 결과를 맞춤화할 수 있어요.

개인정보·비밀번호·API 키는 빼고 입력해 주세요. 입력 내용은 결과 생성을 위해 Gemini에 전달됩니다.

성공한 결과는 1회 사용으로 계산되며 ‘내가 만든 결과’에 보관됩니다.

02 만들어진 결과

준비
✧

완성된 초안이 여기에 표시돼요

입력란에 필요한 내용을 적어주세요.
예제를 채우면 쉽게 시작할 수 있어요.

입력 예시와 완성 결과

합계 함수의 현재 동작 테스트

코드를 넣으면 핵심 동작과 경계를 확인할 테스트 초안을 만듭니다.

완성 결과

실무에서 바로 사용할 수 있는 total 함수의 단위 테스트 초안입니다. Jest 환경을 기준으로 작성하였으며, 정상 동작뿐만 아니라 빈 배열, 단일 값, 잘못된 입력 등 경계 상황과 예외 케이스를 모두 검증하도록 구성했습니다.

1. 테스트 코드 (total.test.js)

// 대상 함수 (코드가 별도 파일에 있다고 가정하거나 직접 포함)
function total(prices) {
  return prices.reduce((sum, price) => sum + price);
}

describe('total 함수 단위 테스트', () => {
  
  // 1. 정상값 테스트: 일반적인 가격 배열 계산
  test('여러 개의 가격이 담긴 배열을 입력하면 총합을 반환한다', () => {
    const prices = [1000, 2500, 3000];
    const result = total(prices);
    expect(result).toBe(6500);
  });

  // 2. 경계값 테스트: 요소가 1개인 경우
  test('요소가 하나인 배열을 입력하면 그 값을 그대로 반환한다', () => {
    const prices = [5000];
    const result = total(prices);
    expect(result).toBe(5000);
  });

  // 3. 소수점 포함 값 테스트 (부동소수점 정확도 확인용)
  test('소수점이 포함된 가격 배열도 정확하게 계산한다', () => {
    const prices = [10.5, 20.3, 5.2];
    const result = total(prices);
    expect(result).toBeCloseTo(36.0);
  });

  // 4. 예외 및 빈값 계약: 빈 배열 입력 시
  test('빈 배열을 입력하면 reduce 에러(TypeError)가 발생한다', () => {
    const prices = [];
    // 초기값(initial value)이 없는 reduce는 빈 배열에서 TypeError를 던집니다.
    expect(() => total(prices)).toThrow(TypeError);
  });

  // 5. 예외 계약: 인자가 전달되지 않거나 유효하지 않은 경우
  test('prices가 배열이 아닐 경우 예외가 발생한다', () => {
    expect(() => total(null)).toThrow();
    expect(() => total(undefined)).toThrow();
  });

});

2. 사례별 기대 결과 및 실패 해석

테스트 케이스입력 (prices)기대 결과실패 시 의미 / 해석
정상값[1000, 2500, 3000]6500산술 연산 또는 reduce 로직에 문제가 생겼을 때 실패합니다.
단일값 경계[5000]5000단건 주문 등의 상황에서 예기치 않은 누락이 발생하는지 확인합니다.
소수점[10.5, 20.3, 5.2]36.0 (toBeCloseTo)JavaScript의 부동소수점 연산 오차(36.000000000000004 등)를 방어합니다.
빈값 예외[]TypeError 발생초기값이 없는 reduce의 특성상 현재 코드는 빈 배열에서 에러를 던집니다. 의도된 설계라면 통과합니다.
잘못된 입력null 또는 undefined에러 발생방어 코드 부재 시 발생하는 TypeError를 확인합니다.

3. 실행 명령

Jest가 프로젝트에 설치되어 있다면 아래 명령어로 즉시 실행할 수 있습니다.

# Jest 설치 (필요한 경우)
npm install --save-dev jest

# 테스트 실행
npx jest total.test.js

한 단계 더 유용하게 만들기: 다음 우선 고려사항

현재 total 함수는 prices.reduce((sum, price) => sum + price) 형태로 초기값(initial value)이 지정되어 있지 않습니다. 이 때문에 빈 배열이 들어오면 TypeError: Reduce of empty array with no initial value가 발생하며, 배열이 비어 있을 때 0을 반환해야 하는 비즈니스 요구사항이 있다면 아래와 같이 함수 개선을 함께 검토하는 것이 좋습니다.

// 초기값 0을 부여하여 빈 배열 안전성 확보
function totalSafe(prices) {
  if (!Array.isArray(prices)) return 0;
  return prices.reduce((sum, price) => sum + price, 0);
}

(※ 실제 프로젝트의 요구 계약에 따라 초기값 `0` 추가 여부를 결정하시면 됩니다.)

내 작업에 적용하기

빈 배열에서 0반환을 원하면 테스트 기대값과 함수 계약을 함께 바꾸세요.

언제, 어떻게 쓰나요?

이 기능을 제대로 활용하는 방법

코드를 새로 쓰거나, 기존 코드의 문제와 다음 확인 순서를 빠르게 정리할 때 활용할 수 있습니다.

  1. 01

    핵심 내용부터 입력

    테스트할 최소 코드을 먼저 적으세요. 처음부터 모든 정보를 완벽하게 준비하지 않아도 됩니다.

  2. 02

    필요할 때 더 구체화

    입력·출력·예외에 대한 요구 계약 · 언어·버전·테스트 도구·모듈 형식와 의존성·모킹·변경 금지 조건을 더하면 상황에 맞는 결과를 받을 수 있습니다.

  3. 03

    결과를 확인하고 활용

    검사 목록 · 테스트 코드 · 실행 방법와 검증 한계 순서로 살펴보고 필요한 부분을 복사하거나 HTML로 내려받으세요. 같은 작업을 다른 AI에서 이어가고 싶다면 입력 내용이 담긴 프롬프트도 받을 수 있습니다.

더 좋은 결과를 위한 팁
  • 언어와 실행 환경, 기대한 동작, 실제 오류를 함께 적으면 적용 가능한 답을 받기 쉽습니다.
  • 제안 코드는 격리된 환경에서 실행하고 기존 테스트와 보안 영향을 확인한 뒤 적용하세요.
자주 묻는 질문

단위 테스트 작성 FAQ

단위 테스트 작성에는 무엇을 먼저 입력하나요?

테스트할 최소 코드만 먼저 입력하면 시작할 수 있습니다. 이 내용만 입력해도 초안을 만들 수 있어요.

선택 정보도 모두 적어야 하나요?

아닙니다. 입력·출력·예외에 대한 요구 계약 · 언어·버전·테스트 도구·모듈 형식와 의존성·모킹·변경 금지 조건은 결과를 더 구체적으로 맞추고 싶을 때만 추가하세요.

만든 결과를 바로 사용해도 되나요?

제안 코드는 격리된 환경에서 실행하고 기존 테스트와 보안 영향을 확인한 뒤 적용하세요.