Skip to content
Vitest 2
Main Navigation 가이드API구성브라우저 모드고급
2.1.9
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 통합

디버깅

다른 테스트 러너와의 비교

마이그레이션 가이드

일반적인 오류

Profiling Test Performance

성능 향상

이 페이지에서

Matcher 확장 ​

Vitest는 Chai와 Jest 모두와 호환되므로, chai.use API 또는 expect.extend 중 원하는 것을 사용하여 Matcher를 확장할 수 있습니다.

본 가이드에서는 expect.extend를 사용하여 Matcher를 확장하는 방법을 다룹니다. Chai의 API에 관심이 있다면 해당 가이드를 확인하세요.

기본 Matcher를 확장하려면, Matcher가 포함된 객체를 expect.extend에 전달하여 호출합니다.

ts
expect.extend({
  toBeFoo(received, expected) {
    const { isNot } = this;
    return {
      // `isNot` 값에 따라 `pass`를 변경하지 마세요. Vitest가 자동으로 처리합니다.
      pass: received === 'foo',
      message: () => `${received} is${isNot ? ' not' : ''} foo`,
    };
  },
});

TypeScript를 사용하는 경우, 아래 코드를 사용하여 전역 선언 파일(예: vitest.d.ts)에서 기본 Assertion 인터페이스를 확장할 수 있습니다.

ts
import 'vitest';

interface CustomMatchers<R = unknown> {
  toBeFoo: () => R;
}

declare module 'vitest' {
  interface Assertion<T = any> extends CustomMatchers<T> {}
  interface AsymmetricMatchersContaining extends CustomMatchers {}
}

WARNING

전역 선언 파일을 tsconfig.json에 포함하는 것을 잊지 마세요.

Matcher의 반환 값은 다음 인터페이스와 호환되어야 합니다.

ts
interface ExpectationResult {
  pass: boolean;
  message: () => string;
  // 이 값들을 전달하면 Matcher가 통과하지 못할 때 자동으로 diff에 표시되므로,
  // 직접 diff를 출력할 필요가 없습니다.
  actual?: unknown;
  expected?: unknown;
}

WARNING

비동기식 Matcher를 생성할 경우, 테스트에서 결과를 await하는 것을 잊지 마세요(await expect('foo').toBeFoo()).

Matcher 함수의 첫 번째 인수는 전달받은 값(expect(received) 내부에 있는 값)입니다. 나머지 인수는 Matcher에 직접 전달됩니다.

Matcher 함수는 다음 프로퍼티를 가진 this 컨텍스트에 접근할 수 있습니다.

  • isNot

    Matcher가 not과 함께 호출된 경우(expect(received).not.toBeFoo()) true를 반환합니다.

  • promise

    Matcher가 resolved 또는 rejected와 함께 호출된 경우, 이 값은 수식어의 이름을 포함합니다. 그렇지 않으면 빈 문자열이 됩니다.

  • equals

    두 값을 비교할 수 있는 유틸리티 함수입니다. 값이 같으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 이 함수는 거의 모든 Matcher에 내부적으로 사용됩니다. 비대칭 Matcher를 포함하는 객체도 기본적으로 지원합니다.

  • utils

    메시지를 표시하는 데 사용할 수 있는 유틸리티 함수 모음이 포함되어 있습니다.

this 컨텍스트에는 현재 테스트에 대한 정보도 포함되어 있습니다. 이 정보는 expect.getState()를 호출하여 얻을 수도 있습니다. 가장 유용한 프로퍼티는 다음과 같습니다.

  • currentTestName

    현재 테스트의 전체 이름(describe 블록을 포함).

  • testPath

    현재 테스트 파일의 경로.

Pager
이전테스트 환경
다음IDE 통합

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

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/extending-matchers

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

Copyright (c) 2024 Mithril Contributors