[TDD] create 에러 처리

김진수·2021년 9월 21일
0

TDD

목록 보기
4/4
post-thumbnail

지금까지는 정상적으로 데이터를 create 하는 테스트만을 작성했다면, 이번에는 임의로 create할 때, 에러를 발생하여 해당 에러를 처리하고, 테스트하는 코드를 짜보겠습니다.

임의로 에러 발생

model/product.js

필수값인 description 넣지 않고 데이터를 post로 보내면

이렇게 hang에 걸려 버립니다.

왜냐하면 해당 에러를 처리하는 부분이 없기 때문입니다.
그렇기에 해당 에러를 처리하는 부분을 작성해보겠습니다.

단위 테스트 작성

data/unit/products.test.js

controller/product.js

Mongodb에서 처리하는 부분은 문제가 없다는 것을 가정하는 단위 테스트이기 때문에 원래 몽고DB에서 처리 하는 에러 메세지 부분은 Mock 함수를 이용해서 처리합니다.

비동기 요청에 대한 결과값은
성공할 때는
Promise.resolve(value)
에러일 때는
Promise.reject(reason)

그렇기에 해당 코드를 보면 rejectedPromise를 통해 임의적으로 에러를 발생시키는 부분을 구현하고,
productModel.create()가 호출되면productModel.create.mockReturnValue()를 통해 해당 에러를 반환합니다.
productController.createProduct(req, res, next) 함수를 호출하고 productModel.create(req.body)가 실행되어 에러가 발생하면, catch문으로 error가 전달되고 next(error)를 통해 express가 해당 에러를 감지하기에 테스트 코드를 보게 되면, expect(next).toBeCalledWith(errorMessage) 즉, next는 errorMessage와 함께 호출된다는 테스트 코드를 짤 수 있는 것입니다.

profile
백엔드 개발자

0개의 댓글