마이그레이션 관리 예전에 장고를 배웠을 때는 마이그레이션 로그들이 자동으로 생성되었던 기억이 있는데 스프링부트와 express.js를 사용해본 이 기점에서 마이그레이션 관리는 따로 해주지 않고 있는 것으로 보였다. 스프링부트는 개인 프로젝트에서 Flyway라고 하는 의존성을 설치해 사용해봤고 이번 회사에서는 knex ORM을 활용해서 마이그레이션 관리 라이브러리를 사용해보았다. 마이그레이션 관리를 왜 해야되지?실제로 신입 개발자 때 팀 프로젝트를 진행했던 적이 있었는데 당시 깃을 관리하던 팀원이 마이그레이션 소스를 깃 이그노어 처리했었다. 한 회사의 면접에서 왜 이그노어 처리했냐고 물었을 때 우물쭈물 대답했던 기억이 났다. 물론 그건 정답도 아니었고. 돌이켜 생각해보면 어차피 오픈소스로 공개하지 않는 이상 코드는 외부로 .. 2024. 9. 24. 함수에서 변수를 명시하지 않았는데 할당됐다 작업 내용에 대해 코드 리뷰를 진행하던 도중에 함수를 통해 얻은 객체의 데이터로 바인딩하지 않고 아무것도 초기화되지 않은 값을 넣어버리는 실수를 했다. 당연히 undefined일 것이라 생각했고 데이터를 찍어보았는데 값이 제대로 넘어오는 이상한 상황이 연출되었다. 그냥 넘어가기에는 상당히 미심쩍은 부분들이 많아 수석님과 찾아보았고 원인은 예상치 못한 곳에 있었다. 함수를 통해 얻은 부분에서 해당 함수를 다시 점검해보니 객체를 리턴해주기 전에 내가 변수를 초기화해주질 않았었다. 타입스크립트가 아닌 자바스크립트 기반의 노드로 운영되다보니 발생한 문제였고 이는 자바스크립트의 특성에서 비롯되었다. 암묵적 전역변수 발생자바스크립트에서는 var, let 또는 const로 변수를 선언하지 않고 값을 할당한다면 해당 .. 2024. 9. 13. jest jest 모듈을 사용해서 테스트 코드를 작성했다. jest 외에도 mocha 등이 있는데 commonJS 스타일을 유지하면서 작성하기 위해 jest를 사용하기로 했다. 설치npm install --save-dev jest실제로 운영에서는 테스트 코드를 작성하지 않기 때문에 개발환경에서만 동작할 수 있도록 설치를 진행한다. 근데 난 잘 모르겠다. { "scripts": { "test": "jest" }}package.json에 test를 jest로 변경한다. 사용법사실 이건 정확하다고 볼 수는 없지만 테스트 코드는 꼭 성공한 케이스만을 작성하지는 않는다. 여러 케이스를 두고 실패하는 케이스를 적용해야 휴먼 에러를 피할 수 있다고 생각하기 때문이다. describe('테스트 네임', () => {.. 2024. 8. 26. 이전 1 다음