FrontEngineer JungBam

getby? findby? queryby? 본문

jest

getby? findby? queryby?

정밤톨 2023. 7. 5. 19:42

이 부분에 대해서 공식문서 내용을 확인해보자. 

공식문서 내용 ::

  • 단일 요소
    • getBy...: 쿼리에 대해 일치하는 노드를 반환하고 일치하는 요소가 없거나 둘 이상의 일치가 발견되면 설명 오류를 발생시킵니다 ( getAllBy둘 이상의 요소가 예상되는 경우 대신 사용).
    • queryBy...: 쿼리에 대해 일치하는 노드를 반환하고 null일치하는 요소가 없으면 반환합니다. 이는 존재하지 않는 요소를 어설션하는 데 유용합니다. 둘 이상의 일치 항목이 발견되면 오류가 발생합니다( queryAllBy정상인 경우 대신 사용).
    • findBy...: 지정된 쿼리와 일치하는 요소가 발견되면 해결되는 Promise를 반환합니다. 요소가 발견되지 않거나 기본 시간 제한 1000ms 후에 둘 이상의 요소가 발견되면 약속이 거부됩니다. 둘 이상의 요소를 찾아야 하는 경우 를 사용하십시오 findAllBy.
  • 다중 요소
    • getAllBy...: 쿼리에 대해 일치하는 모든 노드의 배열을 반환하고 일치하는 요소가 없으면 오류를 발생시킵니다.
    • queryAllBy...: 쿼리에 대해 일치하는 모든 노드의 배열을 반환하고 []일치하는 요소가 없으면 빈 배열( )을 반환합니다.
    • findAllBy...: 지정된 쿼리와 일치하는 요소가 발견되면 요소 배열로 해석되는 약속을 반환합니다. ms 의 기본 시간 초과 후 요소가 발견되지 않으면 약속이 거부됩니다 1000.
      • findBygetBy*메서드는 쿼리와 의 조합입니다 waitFor. waitFor옵션을 마지막 인수로 허용합니다 (예: await screen.findByText('text', queryOptions, waitForOptions))
1. getBy와 queryBy의 가장 큰 차이점은 반환값이 어떤 것이냐에 대한 것이다. 일치하는 값이 없다면 getBy는 에러를 발생시키지만 queryBy는 null을 반환하기 때문에 없는 요소에 대한 테스트를 에러없이 확인할 수 있다.
2. findBy는 반환값이 Promise이기 때문에 async/await을 처리해줘야 한다는 점이 다른 쿼리들과는 다르다.
※ 비동기에 대해서는 쿼리 옵션으로 원하는 옵션안에서의 테스트가 가능하다.
반응형
Comments