- [ 언어·프레임워크/Node.js ]Node.js + MySQL 기반 REST API 단위 테스트 실습 튜터리얼2025-07-26 23:27:22Node.js + MySQL 기반 REST API 단위 테스트 실습 튜터리얼1. 단위 테스트란?단위 테스트(Unit Test)는 애플리케이션의 가장 작은 단위(함수, 메서드 등)가 기대한 대로 동작하는지 독립적으로 검증하는 테스트이다.실제 DB, 네트워크 등 외부 시스템에 의존하지 않고, 함수의 로직만 집중적으로 테스트한다.2. 프로젝트 구조 예시myapp/ ├── controller/ │ └── products.js ├── models/ │ └── Product.js ├── db.js ├── package.json └── test/ └── unit/ └── products.test.js3. MySQL 데이터베이스 준비MySQL에서 테스트용 ..
- [ 언어·프레임워크/Node.js ]Node.js + MySQL 기반 REST API 통합 테스트 완벽 튜터리얼2025-07-26 23:16:58Node.js + MySQL 기반 REST API 통합 테스트 완벽 튜터리얼1. 통합 테스트란 무엇인가? 왜 필요한가?통합 테스트(Integration Test)란, 여러 컴포넌트(예: 라우터, 컨트롤러, DB 등)가 실제 환경처럼 잘 연결되어 동작하는지 검증하는 테스트이다.단위 테스트(Unit Test)는 개별 함수나 모듈만 검증하지만, 통합 테스트는 실제 서버를 띄우고 HTTP 요청을 보내 전체 시스템의 흐름을 검증한다.필요성실제 배포 환경과 유사하게 동작하는지 미리 확인할 수 있다.라우터, 미들웨어, DB 등 여러 계층이 올바르게 연결되어 있는지 한 번에 검증할 수 있다.예외 상황(없는 데이터, 잘못된 요청 등)도 실제처럼 테스트할 수 있다.2. Node.js에서 통합 테스트 구성 방법2-1. 필요..
- [ 언어·프레임워크/Node.js ][Node.js][TROUBLESHOOTING] 객체에 엉뚱한 속성이???2024-04-19 11:33:141. 객체에 엉뚱한 속성이???구동 중인 Node.js로 작성한 배치 서버에서 DB에 저장한 값이 간헐적으로 비정상적인 경우가 발견되었다. 콘솔에 에러 로그를 찍어 보았더니 다음과 같았다.YouError: WHERE parameter "apmac_id" has invalid "undefined" value이 문제의 특이한 점은 정상적인 객체가 전달되다가 간헐적으로 이러한 에러가 발생한다는 것이다. 2. const 사용을 잊지 말자!해당 속성이 없다는 에러가 발생하는 경우에 어떤 데이터가 오는지 콘솔에 찍어보았다. 정상적인 경우와 비정상적인 경우의 예는 아래와 같다.{ apmac_id: 1, count: 92 } // 정상{ fromAP_id: 92, toAP_id: 89, count: 6 } // 비정상..
[ 언어·프레임워크/Node.js ][Node.js] MySQL 날짜, 시간이 왜 UTC 시간으로 조회될까?2024-01-29 09:53:321. MySQL 날짜, 시간이 왜 UTC 시간으로 조회될까? MySQL Workbench에서 SELECT 쿼리로 날짜, 시간에 해당하는 데이터를 조회하니 [그림 1]과 같이 원하는 결과가 잘 나왔다. 하지만 내가 만든 서버에 동일한 쿼리를 적용한 API를 호출하면 [그림 2]와 같이 UTC 시간으로 조회가 되었다. 도대체 왜??? 2. 쿼리에 CONVERT_TZ() 적용해 해결 위와 같은 현상이 발생하는 원인은 아직 찾지 못했다. 다만 쿼리에서 CONVERT_TZ()를 이용해 create_date 칼럼의 타임존을 UTC에서 Asia/Seoul로 변경해주어 이 문제를 해결했다. SELECT CONVERT_TZ(create_date, 'UTC', 'Asia/Seoul') AS create_date // 타임..
[ 프로젝트/[개인] Auto Packing List Manager ][개인] 카스 전자 저울 연동 Packing List 자동 생성 프로그램 #11 | Node.js에서 req.body의 빈 객체 문제로 인해 body-parser 모듈 적용2022-06-02 15:01:57| 이슈비어있는 req.body카스 전자저울의 mdb 파일이 있는 경로를 영속적으로 관리하기 위해 mdb 파일이 있는 경로를 mdbpath.txt에 text 형식으로 써두고자 하였다. 그래서-Node.js에서-post 방식으로 req를 받았는데 req.body가 빈 객체로 왔다. 코드와 실행결과는 다음과 같다.app.post('/mdbpath', (req, res) => { console.log(req.body) res.send('Ok')})PS C:\Users\J\Documents\GitHub\auuto_packing_make\server> node .\papp.js서버가 포트 3000번으로 시작되었습니다.{} req.body가 빈 객체로 오는 문제는 body-parser 모듈로 해결이 가능했다...
[ 영광의 시대!/2022 개발자의 품격 부트캠프 1기 ][개발자의품격][부트캠프][1기][30차시] Node.js #2 | Express 설치 | 라우팅(GET, POST) | MySQL 연동2022-04-07 12:03:50| Express Express 설치 터미널 창에서 아래 명령어를 실행하여 "package.json" 파일을 생성한다. npm init Express를 설치한다. npm i express 생성된 "package.json"은 다음과 같다. // package.json { "name": "node", "version": "1.0.0", "description": "", "main": "10_app.js", "scripts": { "test": "node 10_app.js" }, "author": "Sewol", "license": "ISC", "dependencies": { "express": "^4.17.3", } } express로 웹 서버 구동 // express const express = requi..
[ 영광의 시대!/2022 개발자의 품격 부트캠프 1기 ][개발자의품격][부트캠프][1기][30차시] Node.js #1 | 정의, 특징 | 내장 객체2022-04-06 19:00:28| Node.js 정의 Node.js는 Chrome V8 javaScript 엔진으로 빌드된 JavaScript 런타임 환경이다. | Node.js 특징 논블로킹(Non-blocking) I/O 기본적으로 JavaScript는 블로킹 I/O이다. 예를 들어 블로킹 I/O로 파일 쓰기를 한다면 "파일 쓰기 요청 > (파일 쓰기 함수 호출) 파일 쓰기 실행> 파일 쓰기 완료 > 다음 코드 실행"과 같이 진행된다. 반면 논블로킹 I/O로 파일 쓰기를 한다면 "파일 쓰기 요청 > (파일 쓰기 함수 호출) 파일 쓰기 실행> 다음 코드 실행"으로 진행되며 이 과정에서 파일 쓰기가 완료되면 Callback 함수를 호출해서 파일 쓰기가 완료되었음을 알려준다. 즉, 논블로킹은 함수를 호출한 후 호출된 함수가 실행되는 중..- [ 언어·프레임워크/Node.js ][Node.js][유튜브 강의 노트] 개발자의품격_한시간만에 끝내는 Node.js 입문 #22021-11-22 14:40:33학습내용 1. 강의영상 https://youtu.be/toLDNN4FQv0 유튜버 개발자의 품격님의 "한시간만에 끝내는 Node.js입문" 강의 내용의 나머지 파트로서, html 라우팅과 db연동에 대한 내용을 정리한다. 2. index.html 작성 Welcome to My Homepage AAAA BBBB 3. about.html 작성 About Page 4. server.js 작성 npm을 이용해 필요한 패키지 설치 해야한다. 해당 패키지는 server.js 코드의 주석에 표기하였다. // server.js const express = require('express'); const app = express(); const server = app.listen(3000, () => { console.l..