inflearn logo
강의

Course

Instructor

Learn React Testing by Following [Updated November 2023]

axios의 get request를 이용해서 products를 가져오는 부분에서 500 에러가 납니다.

1052

mhr

52 asked

0

안녕하세요. 

좋은 강의 감사합니다. 방금 완강했는데 TDD에 대해서 많이 배울 수 있어서 좋았습니다. 

다름이 아니라 테스트는 통과하기는 하지만 Type.js의 loadItems 함수에서 localhost:5000/products로 get request를 날려서 product 정보를 가져오는 부분에서 자꾸 500 에러가 나는데 왜 그러는지 이유를 잘 모르겠어서요.

Type.test.js를 실행할 때에 에러가 발생하고 있는데요. try 부분에서 console.log를 찍어보면 products도 mocks/handlers.js에 정의된 response를 잘 받고 있고 그래서 테스트도 통과하는 것 같은데 꼭 한 번씩 catch 부분에 들어가서 에러가 발생하네요. 에러 내역을 로그로 찍어보면 url은 http://localhost:5000/products로 알맞게 들어가있는데, data가 undefined입니다.

mocks 폴더의 handlers, server와 Type.js를 확인해봐도 잘 모르겠어서 강의 첨부파일 소스코드로 바꿔서 진행해봐도 마찬가지로 에러가 뜨는데요. 충분한 정보를 드리지 못하면서 질문 드리는 것 같습니다만, 혹시 이런 경우가 있으셨는지 궁금합니다. 

감사합니다. 

React-Context 웹앱 react jest

Answer 2

0

mhr

안녕하세요. 답변 감사합니다. 

현재 윈도에서 Webstorm을 사용하고 있는데요. 포트를 4000번으로 바꿔도 마찬가지네요. 서버 포트를 바꾸어도 orderType이 products인 경우에 테스트는 통과하지만 에러도 발생하면서 에러 로그에서 response의 data는 undefined로 되어있습니다. 뭐가 문젠지 감이 잘 잡히지 않아서 axios와 msw를 지우고 강의 코드와 같은 버전으로 다시 설치해봤는데 그래도 마찬가지네요. 

에러 메시지가 아래와 같은데 혹시 도움이 될지 몰라 공유합니다. 감사합니다. 

 PASS  src/pages/OrderPage/tests/Type.test.js

  ● Console

 

    console.group

        orderType:  products

 

      at loadItems (src/pages/OrderPage/Type.js:30:15)

 

    console.error

        Error: Request failed with status code 500

          at createError (C:\Users\mhr\Desktop\web\inflearn_react_testing\react-shop-test\node_modules\axios\lib\core\createError.js:16:15)

          at settle (C:\Users\mhr\Desktop\web\inflearn_react_testing\react-shop-test\node_modules\axios\lib\core\settle.js:17:12)

          at XMLHttpRequestOverride.onloadend (C:\Users\mhr\Desktop\web\inflearn_react_testing\react-shop-test\node_modules\axios\lib\adapters\xhr.js:54:7)

          at XMLHttpRequestOverride.trigger (C:\Users\mhr\Desktop\web\inflearn_react_testing\react-shop-test\node_modules\@mswjs\interceptors\src\interceptors\XMLHttpRequest\XMLHttpRequestOverride.ts:168:17)

          at C:\Users\mhr\Desktop\web\inflearn_react_testing\react-shop-test\node_modules\@mswjs\interceptors\src\interceptors\XMLHttpRequest\XMLHttpRequestOverride.ts:323:18 {

        config: {

          url: 'http://localhost:5000/products',

          method: 'get',

          headers: { Accept: 'application/json, text/plain, */*' },

          transformRequest: [ [Function: transformRequest] ],

          transformResponse: [ [Function: transformResponse] ],

          timeout: 0,

          adapter: [Function: xhrAdapter],

          xsrfCookieName: 'XSRF-TOKEN',

          xsrfHeaderName: 'X-XSRF-TOKEN',

          maxContentLength: -1,

          maxBodyLength: -1,

          validateStatus: [Function: validateStatus],

          transitional: {

            silentJSONParsing: true,

            forcedJSONParsing: true,

            clarifyTimeoutError: false

          },

          data: undefined

        },

        request: XMLHttpRequestOverride {

          _events: [],

          UNSENT: 0,

          OPENED: 1,

          HEADERS_RECEIVED: 2,

          LOADING: 3,

          DONE: 4,

          onreadystatechange: null,

          onabort: [Function: handleAbort],

          onerror: [Function: handleError],

          onload: null,

          onloadend: [Function: onloadend],

          onloadstart: null,

          onprogress: null,

          ontimeout: [Function: handleTimeout],

          url: 'http://localhost:5000/products',

          method: 'GET',

          readyState: 4,

          withCredentials: false,

          status: 500,

          statusText: 'Internal Server Error',

          data: '',

          response: '',

          responseType: 'text',

          responseText: '',

          responseXML: null,

          responseURL: '',

          upload: null,

          timeout: 0,

          _requestHeaders: HeadersPolyfill { _headers: [Object], _names: [Map] },

          _responseHeaders: HeadersPolyfill { _headers: [Object], _names: [Map] },

          async: true,

          user: undefined,

          password: undefined

        },

        response: {

          data: '',

          status: 500,

          statusText: 'Internal Server Error',

          headers: { 'x-powered-by': 'msw' },

          config: {

            url: 'http://localhost:5000/products',

            method: 'get',

            headers: [Object],

            transformRequest: [Array],

            transformResponse: [Array],

            timeout: 0,

            adapter: [Function: xhrAdapter],

            xsrfCookieName: 'XSRF-TOKEN',

            xsrfHeaderName: 'X-XSRF-TOKEN',

            maxContentLength: -1,

            maxBodyLength: -1,

            validateStatus: [Function: validateStatus],

            transitional: [Object],

            data: undefined

          },

          request: XMLHttpRequestOverride {

            _events: [],

            UNSENT: 0,

            OPENED: 1,

            HEADERS_RECEIVED: 2,

            LOADING: 3,

            DONE: 4,

            onreadystatechange: null,

            onabort: [Function: handleAbort],

            onerror: [Function: handleError],

            onload: null,

            onloadend: [Function: onloadend],

            onloadstart: null,

            onprogress: null,

            ontimeout: [Function: handleTimeout],

            url: 'http://localhost:5000/products',

            method: 'GET',

            readyState: 4,

            withCredentials: false,

            status: 500,

            statusText: 'Internal Server Error',

            data: '',

            response: '',

            responseType: 'text',

            responseText: '',

            responseXML: null,

            responseURL: '',

            upload: null,

            timeout: 0,

            _requestHeaders: [HeadersPolyfill],

            _responseHeaders: [HeadersPolyfill],

            async: true,

            user: undefined,

            password: undefined

          }

        },

        isAxiosError: true,

        toJSON: [Function: toJSON]

      }

 

0

John Ahn

안녕하세요! 

혹시 서버가 5000에서 잘 돌아가고 있나요? 요즘 맥에서 5000번 포트가 다른 거에 의해서 사용되고 있어서 

설정을 바꾸거나 다른 포트를 사용해야 하는 경우가 있습니다 ~ 

먼저 포트를 4000번으로 바꿔주셔서 다시 한번 해봐 주시면 감사하겠습니다!

제공해주신 코드를 vscode에서 켜도 eslint가 안됩니다.

0

278

2

ERROR

0

209

1

테스트 시간을 단축할 수 있는 방법에 대하여 문의드립니다.

0

360

1

useState 배열값 변경의 경우 테스트 멈춤

0

411

1

test was not wrapped in act관련 질문

0

290

2

안녕하세요! 로딩 상태 테스트에 관련된 질문입니다.

0

394

1

강의 관련 내용 github 업로드 질문

0

307

1

이미지가 안보인다 하셔서 다시 질문드립니다.

0

414

2

Test Fail이 발생합니다 ㅠㅠ

0

356

1

스타일 컴포넌트 테스트 방법

0

438

1

msw 에러

0

630

1

toHaveTextContent 에러

0

442

1

msw안돼는사람

0

579

1

This could be because the text is broken up by multiple elements. 에러

0

1716

2

Type.test.js파일에 궁금한점이 생겼습니다

0

351

1

28강 수강 중 JSX 작성 방법에 대해 궁금해져서 질문 남깁니다!

0

397

1

toHaveTextContent 에서 에러가 자꾸 나는데 아무리 찾아도 잘 모르겠습니다.

0

610

2

aria-*

0

438

1

This XML file does not appear to have any style information associated with it. The document tree is shown below. 에러

1

14082

1

컴포넌트 props내려줄때 코드는 어떻게 해야하나요

0

246

0

es6 jest 미지원 오류 문의

0

855

1

test 여러 개 실행 - fail 발생

0

290

1

useMemo

0

280

1

axios 1.1.2 버전 issue ( SyntaxError: Cannot use import statement outside a module)

4

2222

5