>  Q&A  >  본문

React 테스트 라이브러리에서 findBy 앞에 waitFor 문이 없기 때문에 테스트가 실패합니다.

아아아아

사용자가 버튼을 클릭하는 테스트를 작성했습니다. 버튼은 네트워크 요청을 보내고 200이 반환되면 타이머가 표시되고 초 단위로 계산이 시작됩니다. 모의 응답을 반환하기 위해 MSW를 사용하고 있습니다. 네트워크 요청은 분명히 비동기식이므로 screen.findByRole이 호출될 때까지 기다려 이 타이머를 검색합니다. 내가 겪고 있는 문제는 userEvent.click(startTimerButton)和调用await screen.findByRole('cell', {name: /00:00/i})之间调用await waitFor(() => {})이 호출될 때만 테스트가 통과된다는 것입니다. 이 테스트는 타이머를 검색하기 전에 잠시 잠자기 상태로 두어야만 통과하는 것 같습니다. 검색 타이머를 즉시 시작할 수 없는 이유를 모르겠습니다.

waitFor 문이 없으면 나타나는 오류 메시지는 다음과 같습니다.

오류: 오류: "테스트 시간 초과가 5000ms를 초과했습니다. 장기간 실행되는 테스트인 경우 jest.setTimeout(newTimeout)을 사용하여 시간 초과 값을 늘립니다. " var evt = document.createEvent('event'); TypeError: null의 'createEvent' 속성을 읽을 수 없습니다

이유 아시는 분 계신가요? 지금처럼 그런 일을 겪지 않았으면 좋겠어요.

또한 findBy 대기를 waitFor 문 안에 포함된 getBy로 변경하려고 시도했지만 그 역시 작동하지 않았습니다. 잠시 잠자기 상태로 두고 검색을 시작하면 될 것 같습니다.

P粉174151913P粉174151913429일 전423

모든 응답(1)나는 대답할 것이다

  • P粉248602298

    P粉2486022982023-09-10 10:14:46

    이 줄에서 누락된 내용await:

    으아악

    한번 시도해 보세요:

    으아악

    버전 14부터 userEvent API는 비동기식입니다.

    회신하다
    0
  • 취소회신하다