TIL

20230117 TIL 환경 변수를 사용하는 jest테스트하기

jiwoosmile 2023. 1. 17. 17:58

https://res.cloudinary.com/practicaldev/image/fetch/s--5ng7r_Zd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AiTLvajtJ6tN3DnHArGKkDA.png

cloudinary를 이용해서 이미지 서버에 이미지를 올리는 과정에서 jest테스트가 원치 않는 결과를 보였다.

cloudinary api base url을 아래와 같이 작성해두었었고,

https://api.cloudinary.com/v1_1/${cloudinaryName}/image/upload/

cloudinaryName은 config.js에서 받아오고 있었고,

config.js에서는 process.env에서 값을 받아오고 있었다.

 

그런데 테스트를 돌릴 때 환경 변수를 잡아주고 있지 않았기 때문에

https://api.cloudinary.com/v1_1/undefined/image/upload/

로 테스트에서 실행이 되었다.

 

물론 테스트 서버에서 url에 undefined가 포함된 두번째 url로 잡아주면 테스트를 원하는대로 실행시킬 수는 있겠지만, 

undefined라는 값으로 남아있는 것이 바람직해보이지 않았고, 

원하는 값으로 수정하고 싶었다.

 

여러가지 방법이 있겠지만, 테스트 상에서 config.js를 원하는 값으로 실행하고 싶었기 때문에

모킹을 하면 간단히 원하는 결과를 얻을 수 있을 것 같았다.

 

jest.mock('../config', () => ({
  cloudinaryName: 'ofcors-image-server',
}));

를 통해 환경변수를 사용하는 값을 테스트에서 원하는 값으로 넣어줄 수 있게 되었고,

testServer에서 수상한 undefined가 포함된 url을 작성하지 않아도 되게 되었다.

 

테스트 상에서만 어떤 값을 수정하고 싶다면 모킹을 적극적으로 고려해보도록 하자!

그리고 모킹을 했다면 꼭 clear를 해주는 습관을 들이자!