Skip to content
Vitest 1
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

assert

assertType

구성

Vitest 구성 파일 관리

Vitest 구성하기

이 페이지에서

Matcher 확장하기 ​

Vitest는 Chai 및 Jest와 호환되므로 chai.use API 또는 expect.extend 중 원하는 방식을 사용할 수 있습니다.

이 가이드에서는 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 0.31.0 버전부터는 다음과 같은 코드를 사용하여 앰비언트 선언 파일 (vitest.d.ts 등)에서 기본 Assertion 인터페이스를 확장할 수 있습니다.

ts
import type { Assertion, AsymmetricMatchersContaining } from '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 MatcherResult {
  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으로 호출된 경우 true를 반환합니다 (expect(received).not.toBeFoo()).

  • 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://v1.vitest.dev/guide/extending-matchers

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

Copyright (c) 2024 Mithril Contributors