Skip to content
Vitest 0
Main Navigation 가이드API구성고급
1.6.1
0.34.6

한국어

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
Italiano
Polski
Türkçe
čeština
magyar

한국어

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
Italiano
Polski
Türkçe
čeština
magyar

외관

Sidebar Navigation

가이드

Vitest를 선택하는 이유

시작하기

기능

워크스페이스

명령줄 인터페이스

테스트 필터링

커버리지

스냅샷

모의화

타입 테스트

Vitest UI

브라우저 모드 (실험적)

소스 내 테스트

테스트 컨텍스트

테스트 환경

Matcher 확장하기

IDE 통합

디버깅

다른 테스트 러너와의 비교

마이그레이션 가이드

일반적인 오류

API

테스트 API 참조

Mock 함수

Vi

expect

expectTypeOf

assertType

구성

Vitest 설정하기

이 페이지에서

타입 테스트 ​

Vitest를 사용하면 expectTypeOf 또는 assertType 구문을 사용하여 타입에 대한 테스트를 작성할 수 있습니다. 기본적으로 *.test-d.ts 파일 내의 모든 테스트는 타입 테스트로 간주되지만, typecheck.include 설정 옵션을 사용하여 이를 변경할 수 있습니다.

Vitest는 내부적으로 설정에 따라 tsc 또는 vue-tsc를 호출하고 그 결과를 분석합니다. 소스 코드에서 타입 오류가 발견되면 Vitest는 이를 출력합니다. typecheck.ignoreSourceErrors 설정 옵션을 사용하여 이 기능을 비활성화할 수 있습니다.

이러한 파일은 실행되거나 컴파일되지 않고, 컴파일러에 의해 정적으로 분석될 뿐이므로 동적 문법을 사용할 수 없습니다. 즉, 동적 테스트 이름, test.each, test.runIf, test.skipIf, test.concurrent API는 사용할 수 없습니다. 그러나 test, describe, .only, .skip 및 .todo와 같은 다른 API는 사용할 수 있습니다.

--allowOnly 및 -t와 같은 CLI 플래그도 타입 검사에서 지원됩니다.

ts
import { assertType, expectTypeOf } from 'vitest';
import { mount } from './mount.js';

test('my types work properly', () => {
  expectTypeOf(mount).toBeFunction();
  expectTypeOf(mount).parameter(0).toMatchTypeOf<{ name: string }>();

  // @ts-expect-error name is a string
  assertType(mount({ name: 42 }));
});

테스트 파일 내에서 발생하는 모든 타입 오류는 테스트 실패로 처리되므로 프로젝트의 타입 테스트를 위해 원하는 타입 관련 기법을 자유롭게 사용할 수 있습니다.

API 섹션에서 사용 가능한 매처 목록을 확인할 수 있습니다.

오류 분석 ​

expectTypeOf API를 사용하는 경우 이해하기 어렵거나 예상치 못한 오류가 발생할 수 있습니다.

ts
expectTypeOf(1).toEqualTypeOf<string>();
//             ^^^^^^^^^^^^^^^^^^^^^^
// index-c3943160.d.ts(90, 20): Arguments for the rest parameter 'MISMATCH' were not provided.

이는 expect-type이 타입 오류를 처리하는 방식 때문입니다.

안타깝게도 TypeScript는 패치 없이는 타입 메타데이터를 제공하지 않습니다. 따라서 현재로서는 유용한 오류 메시지를 제공하기 어렵습니다. 이 문제를 해결하기 위한 TypeScript 프로젝트의 작업이 진행 중입니다. 더 나은 메시지를 원하시면 TypeScript 팀에 해당 PR에 대한 의견을 요청해 주십시오.

expectTypeOf API를 사용하는 데 어려움을 겪는 경우 더 간단한 assertType API를 사용할 수 있습니다.

ts
const answer = 42;

assertType<number>(answer);
// @ts-expect-error answer is not a string
assertType<string>(answer);

TIP

@ts-expect-error 구문을 사용하는 경우 오타가 없는지 확인하는 것이 좋습니다. test.include 설정 옵션에 타입 파일을 포함하여 Vitest가 실제로 이러한 테스트를 실행하고 ReferenceError로 실패하도록 할 수 있습니다.

다음 코드는 오류를 예상하기 때문에 통과하지만 "answer"라는 단어에 오타가 있어 거짓 양성 오류를 발생시킵니다.

ts
// @ts-expect-error answer is not a string
assertType<string>(answr); //

타입 검사 실행하기 ​

package.json 파일의 scripts 섹션에 다음 명령을 추가합니다.

json
{
  "scripts": {
    "typecheck": "vitest typecheck"
  }
}

이제 타입 검사를 실행할 수 있습니다.

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

Vitest는 설정에 따라 tsc --noEmit 또는 vue-tsc --noEmit를 사용하므로 이러한 스크립트를 작업 흐름에서 제거할 수 있습니다.

Pager
이전모의화
다음Vitest UI

MIT 라이선스 하에 배포되었습니다.

Copyright (c) 2024 Mithril Contributors

https://v0.vitest.dev/guide/testing-types

MIT 라이선스 하에 배포되었습니다.

Copyright (c) 2024 Mithril Contributors