⌨️ 32

[jest] nestjs 테스트 코드

테스트 코드를 공부하면서 작성하던 중에 let service: CollectionService; 이러한 작성 방식과 const collectionService = { getMyColList getUserColList getMyCol createCol updateCol deleteCol addContentToCollection removeContentFromCollection } 이러한 작성 방식은 어떤 차이가 있는 건지 궁금해져서 정리해봤다. (예제는 현재 작성 중인 테스트 코드 파일에서 가져왔습니다) 1. 첫번째 방식은 CollectionService 클래스의 인스턴스를 생성하고, 해당 인스턴스를 사용하여 테스트를 진행한다. (이것을 service라는 변수에 할당) 이렇게 실제 클래스를 가져오기 때문에..

⌨️/Node.js 2024.04.22

[NestJS]

익스프레스의 단점, 한계 필요한 기능이 생길 때마다 미들웨어가 자꾸 추가되고 그러면 익혀야 할 것이 늘어나고 코드도 계속해서 수정해야 함 Nest.js의 장점 컨트롤러, 서비스, 미들웨어, 인터셉터, 모듈 등 웹 서버에 필요한 다양한 구성 요소를 커맨드로 정확하게 구현 가능 ex) nest g co posts -> Posts 컨트롤러 생성 가능 nest.js가 기계적으로 구성한 바탕 위에서는 오히려 실수하기가 힘들다! 때문에 코드의 생산성이 올라가 로직의 퀄리티를 올리는데 집중할 수 있음 컨트롤러 데코레이터를 통해 클래스가 컨트롤러 역할을 함 컨스트럭쳐 인자로 서비스 객체를 넘기면 멤머 변수에 서비스 객체가 주입 => DI (의존성 주입) 생성자를 통한 DI 컨트롤러는 고객(클라이언트)의 음식을 주문받고..

⌨️/Node.js 2024.04.11

[TypeScript] d.ts 파일

자바스크립트가 타입스크립트보다 한참 이전부터 존재했기 때문에, 개발자들은 이미 작성된 자바스크립트 라이브러리를 타입스크립트 코드에서도 호환이 가능하게 만들어 주고 싶었음 타입스크립트는 @types 라이브러리를 통해 외부 라이브러리에 대한 타입 정보 제공 그리고 @types 디렉토리 내부에 가면 있는 것이 d.ts 파일이고, 외부 라이브러리(자바스크립트 라이브러리)에 대한 타입 정보를 제공해주는 각각의 파일 이 라이브러리를 믿고 js 파일을 가져올 수 있음 .d.ts 파일로 외부 라이브러리의 함수 타입 정보, 클래스 타입 정보, 객체 타입 정보 뿐 아니라 외부 라이브러리의 타입 추론도 가능함 해당 자바스크립트 라이브러리에 대한 .d.ts 파일을 타입스크립트에 제공해주면, 기존 자바스크립트 라이브러리 코드에..

⌨️/TypeScript 2024.03.13

[TypeScript] typeORM

config : 노드의 .env와 같은 역할 joi : validator의 역할 Entity : 데이터베이스의 특정 테이블을 대표하는 객체 이 객체를 통해 ORM 프레임워크가 데이터베이스와 통신 repository : 엔티티와 데이터베이스 간의 중간 계층을 형성하는 객체 프로그래머가 데이터베이스와의 통신과정을 알지 못하더라도 추상화 된 리포지토리의 함수를 사용하여 데이터베이스에서 원하는 결과를 얻을 수 있도록 함

⌨️/TypeScript 2024.03.11

[TypeScript] tsc : 타입스크립트 컴파일러

tsc는 타입스크립트 컴파일러 컴파일러란? 특정 프로그래밍 언어가 정적 언어로서의 정체성을 유지할 수 있게 하는 도구 컴파일러의 기능 타입검사를 해줌 에러 메시지 해석에 도움 TS -> JS 코드 변환 최적화 -> 어플리케이션 실행 시간이 빨라짐 JS는 동적 언어(=인터프리터 언어)이기 때문에 기계어로 변환될 필요가 없음 엔진이 코드를 한 줄씩 실행하며 동적으로 해석하기 때문 정적 언어(=컴파일 언어)만 기계어로 변환 필요 주요 tsc 명령어 tsc —init tsconfig.json 파일이 생성되는 명령어 타입스크립트 기반 프로젝트를 초기화 tsc index.ts index.ts를 컴파일함 tsc src/*.ts src 디렉토리 안에 있는 모든 ts 파일을 컴파일

⌨️/TypeScript 2024.03.07

[TypeScript] 프로젝트 생성 및 셋팅

npm init -y 프로젝트 초기화 tsc --init --rootDir ./src --outDir ./dist --esModuleInterop --module commonjs --strict true --allowJS true --checkJS true tsc --init tsconfig.json 파일 생성 -> 타입스크립트 프로젝트로 변환 --rootDir ./src -> 프로그램의 소스 파일이 들어가는 경로 설정(해당 프로젝트는 src 폴더 기준) --outDir ./dist -> 컴파일 된 파일들이 들어가는 디렉토리 경로 설정 --esModuleInterop -> CommonJS 모듈을 ES 모듈 방식의 import 구문으로 가져옴 --module commonjs -> 타입스크립트 파일을 컴파일..

⌨️/TypeScript 2024.03.06

[TypeScript] yarn, npm을 이용한 TypeScript 설치 방법 (+각종 에러..)

터미널에 아래 명령어를 입력한다. (mac이면 앞에 sudo를 붙여야 설치가 정상적으로 될 수도) yarn add global typescript --dev -g로 작성했더니 에러가 나서 global로 수정하니 잘 설치됐다. yarn run tsc --init tsconfig.json 파일을 생성하고 프로젝트 초기화 그런데 그 이후로 에러가 정말 많이 나서 이거 해결한다고 4시간은 쓴 것 같다..... 자꾸 yarn 관련 에러 메시지가 떠서 uninstall로 타입스크립트를 삭제하고 npm으로 다시 설치해봤다. sudo npm i typescript -g Problems loading reference 'https://json.schemastore.org/package': Unable to load sc..

⌨️/TypeScript 2024.03.04

[Node.js] 테스트 코드 (Test Code), Jest 테스팅 프레임워크

테스트 코드란? 작성한 코드에 문제가 없는지 테스트하는 코드 (= 개발한 코드가 의도대로 동작하는지 작성하는 코드) 결함의 존재를 인지하는 것이 중요 ✔️ 단위 테스트 (Unit Test) : 가장 작은 규모의 기능을 테스트 ✔️ 통합 테스트 (Intergration Test) : 다양한 기능을 합쳤을 때 생기는 문제를 방지하기 위한 테스트 ✔️ E2E 테스트 (End-to-end Test) : 백엔드부터 시작해서 최종적으로 웹페이지가 원하는대로 동작하며 원하는 데이터를 잘 보여주는지 확인하는 테스트 Jest 자바스크립트에서 사용 가능한 테스팅 프레임워크 테스트 코드의 표현이 타 프레임워크보다 훨씬 간결 yarn add -D jest jest 모듈 설치 "scripts": { "test": "node -..

⌨️/Node.js 2024.02.28

[Node.js] bcrypt 함수로 암호화하기

bcrypt는 암호화 해시 함수의 한 종류이다. 레인보우 테이블에 대항하기 위해 해시 함수에 솔트를 함께 사용한 것이 비크립트라고 하는데 레인보우 테이블은 뭐고 솔트는 뭘까... rainbow table 은 해시 함수를 이용하여 나올 수 있는 모든 값을 전부 저장한 테이블이고, 이 값들을 하나하나 대조해서 찾아내는 방식으로 사용된다. salt는 찾아보니 암호학 용어라고 하는데, 비밀번호에 소금을 친다는 느낌으로 이해하면 된다고 하셨다. 나는 이번 프로젝트에서 회원가입시 사용자의 비밀번호를 받아와 암호화하는 용도로 사용했다. // npm npm install bcrypt // yarn yarn add bcrypt 먼저 터미널에서 비크립트를 설치한다. const hashedPassword = await bc..

⌨️/Node.js 2024.02.06

[Node.js] npx prisma db push

~오늘의 수강 과목~ 1. Node.js 숙련 2주차 (이용우 튜터님) 게시판 기능을 구현하는 중인데 api 테스트를 하다가 Posts 작성 부분에서 막혔다. 리퀘스트를 작성하고 send 버튼을 누르면 서버가 끊겼다. 터미널을 확인해보니 Argument `password` is missing. 이라는 메세지가 나왔다. schema.prisma 파일의 Posts model 부분에서는 password를 설정해놨는데, api 테스트를 할 때 리퀘스트 json 부분에 title, content만 적어서 보낸 것이 원인으로 보였다. 그래서 schema.prisma 파일의 Posts model 부분으로 가서 password를 삭제 후 저장했으나 계속 같은 상태였다. 다들 감이 오셨는지... schema.prisma..

⌨️/Node.js 2024.01.31