inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 TDD 개발 [2023.11 업데이트]

에러 처리를 위한 단위 테스트 작성

에러 처리를 위한 단위테스트 작성

345

ce ce

작성한 질문수 2

0

에러 처리를 위한 단위테스트 작성 강의 내용 중 이해가 가지 않는 부분이 생겨 글 남김니다.

errorMessage 의 message 내용은 description property missing 에러입니다. 그렇다면 테스트 상황에서 포스트맨과 동일하게 description이 빠진 객체를 저장하다 에러가 발생해야 맞는 테스트가 아닌가 하는 의문이 생기네요.

it('should handle errors', async () => {
const errorMessage = {message: "description property missing"};
const rejectedPromise = Promise.reject(errorMessage);
productModel.create.mockReturnValue(rejectedPromise);
await controller.createProduct(req, res, next);
expect(next).toBeCalledWith(errorMessage);
})

node.js mongodb express supertest tdd jest mongoose 소프트웨어-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 답변드리겠습니다.

에러 처리에 대한 단위 테스트를 작성할 때, 실제 포스트맨과 같이 에러 상황을 재현하는 것은 통합 테스트의 범위에 가까울 수 있습니다. 단위 테스트의 경우에는 간소화된 환경에서 특정 모듈이나 기능이 예상대로 동작하는지를 검증하는 것이 목적입니다. 따라서 description 속성이 누락된 객체를 저장하려고 할 때 발생하는 에러를 단위 테스트에서 모사하려면, 실제로 데이터베이스에 객체를 저장하는 대신에 해당 에러를 반환하는 Promise를 reject하는 것으로 충분합니다.

주어진 샘플 코드에서는 productModel.create 함수가 호출될 때 Promise.reject를 사용해 에러 메시지를 반환하고, 이를 controller.createProduct 함수가 처리하도록 함으로써, next 함수가 올바른 에러 메시지와 함께 호출되는지를 테스트하고 있습니다.

이에 대해 더 깊이 이해하고 싶으시다면 Spring Boot Reference Documentation의 “Testing With a Mock Environment” 섹션을 참고하시길 추천드립니다. 이 섹션에서는 목(mock) 환경에서의 테스트가 서블릿 컨테이너의 모든 행위를 테스트하는 것은 아니라고 설명하고 있습니다. 에러 처리 같은 경우는 서블릿 컨테이너에 의존하는 동작을 포함하므로, 목 환경에서는 MVC 레이어에서 예외가 발생하고 처리되는 것만을 테스트할 수 있습니다. 공식 문서는 다음 URL에서 확인하실 수 있습니다.

위의 정보들을 통해 에러 처리 단위테스트와 관련한 귀하의 이해도를 높일 수 있기를 바랍니다.

TypeError: user_model_1.default.create is not a function

0

255

1

res.status(201) 부분에서 typeerror가 발생합니다

0

388

1

따라하며 배우는 TDD 개발 [2023.11 업데이트] 강의 질문

0

334

1

[MAC] PORT:5000번 관련 에러

0

273

0

테스트를 위한 데이터베이스를 생성해야하나요?

0

402

1

Postman 사용방법에 대해서

0

401

1

jest.fn() 을 할당할때 타입스크립트에서 에러가 발생합니다.

0

445

1

라우터를 돌릴 때

0

354

1

npm run start를 실행할 때 부터가 이상합니다.

1

433

1

node.js에 대한 이상점

0

454

1

nodemocks 오류나니까 뺴고 설치하셔요

1

410

1

Node.js 앱을 테스트하기 위한 Jest 설정 부분..

0

272

0

models 파일만 첫번째 글자를 대문자로 해주는 이유

0

298

1

mongodb project 및 cluster관련

0

329

0

무조건 failure case 로 넘어가시는 분들

2

259

1

올려둔 ES6 Express Jest Boilerplate Template 으로 개발 중이신 분들...

0

237

0

ES6 사용하고 싶은 분들...

1

360

0

Jest did not exit one second after the test run has completed. 이슈

0

3040

3

왜 인자네개 함수 안만들어도 포스트맨에서는 에러메세지가 나오는 것인가요?

0

301

2

통합 테스트에 관한 질문 이 있습니다.

0

243

1

bodyParser 대체에 관한 질문

0

424

2

Cannot log after tests are done. Did you forget to wait for something async in your test?

0

2121

1

안녕하세요. 문의드립니다.

0

203

1

mock 사용 관련

0

166

0