>

jest를 사용하여 단위 스크립트로 단위 테스트를 작성하려고했습니다.

// This is how foo() is defined:
// function foo(): 
//        {status: "OK"} | 
          {status: "ERROR", reason: "INVALID_ID"|"SOME_OTHER_ERROR"};
let res = foo();
expect(res.status).toEqual("ERROR");
expect(res.reason).toEqual("INVALID_ID");
// ^^^ this line gives error TS2339: Property 'reason' does not exist on type ....

타입 스크립트에는 assert(res.status == "ERROR") 와 같은 구문이 있습니까?  그 후 컴파일러는 결과가 두 번째 변형 인 것을 알 수 있습니까?

그렇지 않다면 expect() 에서 컴파일러에 필요한 힌트를 제공하는 다른 단위 테스트 프레임 워크가 있습니까?  기능처럼?

또는 foo() 에서 오류를 반환하는 더 좋은 방법이 있습니까 ?


  • 답변 # 1

    귀하의 경우 간단한 유형 어설 션 만 사용할 수 있습니다.

    // Store the type for convenience.
    type ErrorResponse = {status: "ERROR", reason: "INVALID_ID"|"SOME_OTHER_ERROR"}
    
    let res = foo();
    expect((res as ErrorResponse).reason).toEqual("INVALID_ID");
    
    

    고급 시나리오에서는 타입 가드를 사용할 수 있습니다.

    type OkResponse = {status: "OK"}
    type ErrorResponse = {status: "ERROR", reason: "INVALID_ID"|"SOME_OTHER_ERROR"};
    function isErrorResponse(response: OkResponse | ErrorResponse): response is ErrorResponse {
      return response.status === "ERROR"
    }
    
    
    

  • 이전 ios - WhatsApp 또는 메시지와 같은 앱을 사용하여 앱을 열면 Branch SDK Params가 비어 있습니다
  • 다음 kotlin - 개인용 확장 프로그램은 무엇입니까