본문 바로가기
728x90
반응형

개발자 도전기111

TDD | node.js | 사용자 조회, 삭제, 추가, 수정 API 테스트 ※ 인프런 - 테스트주도개발(TDD)로 만드는 NodeJS API 서버 강의를 기반으로 정리한 내용입니다. 사용자 조회 API 테스트 코드 사용자를 조회하는 API는 /users/:id로 설정한다. 성공 시 id가 1인 유저 객체를 반환 실패 시 id가 숫자가 아닐 경우 400으로 응답 id로 유저를 찾을 수 없을 경우 404 응답 성공 시 테스트 코드를 먼저 작성해보자. // index.spec.js describe('GET /users/:id는', () => { describe('성공 시', () => { it('id가 1인 유저 객체를 반환한다', (done) => { request(app) .get('/users/1') .end((err, res) => { res.body.should.have.p.. 2022. 5. 24.
TDD | node.js | 사용자 목록 조회 API 테스트 코드 만들기 ※ 인프런 - 테스트주도개발(TDD)로 만드는 NodeJS API 서버 강의를 기반으로 정리한 내용입니다. 앞에서 간단하게 구현해봤던 /users API를 구체적으로 작성해볼 것이다. GET /users 는 성공했을 때, 다음과 같은 결과가 도출된다. 유저 객체를 담은 배열로 응답 최대 limit 갯수만큼 응답 실패 했을 때는 다음과 같은 결과가 나오게 할 것이다. limit이 숫자형이 아니면 400 응답 offset이 숫자형이 아니면 400 응답 limit은 응답 받을 데이터의 총 길이, offset은 응답 받은 데이터 중 스킵할 때, 그 길이의 차이를 나타내는 파라미터 index.spec.js의 파일을 다음과 같이 수정한다. const app = require('./index'); const requ.. 2022. 5. 23.
TDD | 테스트 주도 개발? ※ 인프런 - 테스트주도개발(TDD)로 만드는 NodeJS API 서버 강의를 기반으로 정리한 내용입니다. TDD(Test Driven Development) 테스트 주도 개발(TDD)은 바로 소스코드를 작성하지 않고, 테스트 코드를 먼저 작성하는 방식을 말한다. 그러고 나서 테스트를 하나씩 통과해가면서 코드를 만들어간다. 강사님 같은 경우 API 서버를 만들 때 TDD 방식을 많이 사용한다고 한다. TDD를 사용하게 되면 개발하는데 시간이 많이 소요되지만, 프로젝트를 유지보수 하는 시점에 가면 TDD로 개발했던 것이 큰 효과를 발휘한다고 한다. 개발을 할 때, 개발을 하는 시간보다는 유지보수하는데 더 많은 시간이 들었고, 이때 TDD방식으로 개발했을 때 많은 도움이 되었다고 한다. (실제로 많은 기업에.. 2022. 5. 9.
ts-node | NodeBird | 다양한 케이스를 위한 오버로딩 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 오버로딩? 같은 매개변수를 여러 방법으로 설정하는 것 이전 글에서 local.ts 파일에 해당하는 타입 정의를 위해 직접 타이핑을 했었다. 그런데 만약 local 내의 코드를 수정해야 하는 경우라면 어떻게 해야 할까? import * as passport from 'passport'; import * as bcrypt from 'bcrypt'; import { Strategy } from 'passport-local'; import User from '../models/user'; export default () => { passport.use('local', new S.. 2022. 5. 6.
ts-node | NodeBird | 타입 없는 라이브러리 타이핑하기 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 본 강의에서는 프론트엔드는 다루지 않기 때문에 대체할만 것들을 직접 작성해본다고 한다. 타입스크립트를 작성할 때 크게 두 가지 방법이 있다. 첫 번째는 리덕스처럼 처음부터 타입스크립트로 코드를 작성하는 방법이고, 나머지 하나는 JS로 먼저 코드 작성 후 타입스크립트를 붙이는 방식이다. 우리는 두 번째 방식으로 타입스크립트를 작성할 것이고, @types/passport-local 라이브러리를 직접 코딩하면서 테스트해볼 것이다. 그래서 기존에 설치했던 이 모듈은 삭제. npm rm @types/passport-local 타이핑은 /back/types에서 할 것이다. tsco.. 2022. 5. 3.
ts-node | NodeBird | 라우터 만들기(3) ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. routes/post.ts 저번에 이어서 계속 post라우터 만들어가자. image를 업로드 하는 라우터는 다음과 같다. router.post('/images', upload.array('image'), (req, res) => { console.log(req.files); if (Array.isArray(req.files)) { res.json((req.files as Express.MulterS3.File[]).map((v) => v.location)); /** * location이라는 메소드는 MulterS3 네임스페이스에만 존재하기 때문에 Multer를 Multe.. 2022. 5. 3.
ts-node | NodeBird | 라우터 만들기(2) ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. routes/user.ts 저번에 user라우터를 만들고 있었고, 이어서 진행해보자. user라우터는 다음과 같이 완성됐다. import * as express from 'express'; import * as bcrypt from 'bcrypt'; import * as passport from 'passport'; import { isLoggedIn, isNotLoggedIn } from './middleware'; import User from '../models/user'; import Post from '../models/post'; import Image fro.. 2022. 5. 2.
ts-node | NodeBird | 라우터 만들기(1) ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 타입스크립트를 포함한 익스프레스의 라우터를 구현해보자. routes/middleware.ts 우선 미들웨어 파일을 만들 것이다. 이 파일에는 현재 사용자의 인증 여부를 파악하는 함수들을 만든다. import {Request, Response, NextFunction} from 'express'; const isLoggedIn = (req: Request, res: Response, next: NextFunction) => { if (req.isAuthenticated()) next(); else res.status(401).send('로그인이 필요합니다!'); }; co.. 2022. 4. 22.
ts-node | NodeBird | passport 설정 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. Passport 이제 로그인 인증 기능을 구현하기 위한 passport 미들웨어를 작성할 것이다. 먼저 back 폴더 내에 passport 폴더를 생성하고, 폴더 내에 index.ts를 만든다. 코드는 다음과 같이 작성한다. // passport/index.ts import * as passport from 'passport'; import User from '../models/user'; // 클래스는 그 자체로 타입으로 정의할 수도 있음 import local from './local'; export default () => { passport.serializeUse.. 2022. 4. 22.
728x90
반응형