테스트 코드란? 개발한 코드가 의도한대로 동작하는지 작성하는 코드 작성한 코드에 문제가 없는지 테스트하기 위해 작성하는 코드 일곱테스트원칙 더보기 ■ 테스팅은 결함의 존재를 보여주는 것이다. ■ 완벽한 테스트는 불가능하다. ■ 테스트 구성은 가능한 빠른 시기에 시작한다. ■ 결함은 군집되어 있다. ■ 살충제 역설(Pesticide Paradox) - 비슷한 테스트가 반복되면 새로운 결함을 발견할 수 없다. ■ 테스팅은 정황에 의존적이다. ■ 오류 부재의 오해 - 사용되지 않는 시스템이나 사용자의 기대에 부응하지 않는 기능의 결함을 찾고 수정하는 것은 의미가 없다. 테스트 코드의 종류 - 단위 테스트 - 통합 테스트 - E2E 테스트 - 시스템 테스트 - 인수 테스트 jest를 사용하는 이유? 테스트 코드..
타입오알엠은 타입스크립트에 보통 사용을 한다. 타입오알엠은 이름과 타입을 지정해주어 데이터베이스와 연동하는것인데 자바스크립트 즉 NODE환경에서도 사용할수 있도록 해본다. 검색법 : typeorm javascript 적용하기 환경 : yarn 패키지와 ES6모듈을 사용합니다. 1. 모듈 설치 // TypeORM과 사용할 RDB설치 yarn add typeorm yarn add mysql 2. 폴더 설정 위 검색어로 검색을 했을 때 나오는 페이지의 환경을 따라갑니다. 3. 파일 설정 // index.js import typeorm from "typeorm"; import dotenv from "dotenv"; import entityResume from "./entity/resume.entity.js"; ..
IoC(Inversion of Control) ■ Inversion of Control의 뜻 그 대로 제어의 역전이다. ■ 컨트롤의 제어권이 사용자(개발자)가 아니라 프레임워크에 있어 프레임워크가 필요에 따라 사용자의 코드를 호출 한다. ■ IoC원칙을 사용하면 구체적인 구현보다는 인터페이스나 추상 클래스에 의존하게 된다. 즉, 서비스가 변경되어도 관계없이 사용가능. ■ 코드의 결합도가 감소하고, 다른 구현체로 쉽게 교체할 수 있다. import { prisma } from '../utils/prisma/index.js'; import { UsersController } from '../controllers/users.controller.js'; import { UsersServices } from '...
객체지향 프로그래밍 설계 5원칙 SOLID란? SOLID - 객체지향 프로그래밍 및 설계의 다섯가지 기본 원칙의 맨 앞단어를 하나씩 가져와 만든것 입니다. - 이 원칙을 따르면 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 구축할 수 있습니다. - 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침입니다. SOLID종류 S | SRP | Single Responsibility Principle | 단일 책임 원칙 ■ 한 클래스는 하나의 책임을 가져야 한다, 즉 클래스나 모듈을 변경할 이유는 단 하나 뿐이여야 한다. ■ 소프트웨어의 유지보수성과 확장성을 향상시키는 데 도움이 된다. ■ 각 클래..
생각 보다 많은 오류가 났던 pm2적용시키기.. 그래도 다음엔 같은 오류가 나지 않게 하기 위해 한번 오늘 겪었던 모든 오류와 생각을 정리해봤다. 일단 pm2를 AWS의 EC2에서는 사용하여 서버를 끄더라도 계속 작동이 되도록 사용해 보았다. 하지만 어느 회사던지 하나의 서버로만 작동하진 않는다. 그래서 우리는 서버를 분산하여 데이터의 과부화라던지 성능면에서 좀더 나은 향상을 바라야 한다. 그래서 우리는 노드환경에서 사용할수 있는 PM2를 사용해본다. 일단 yarn패키지를 사용하고 있으므로 yarn 기준으로 한다. npm패키지 같은 경우는 여러곳에서 많이 사용하므로 구글링을 해보면 바로 나온다. 패키지 다운로드 // yarn패키지 yarn global add pm2 // npm패키지 npm i pm2 -..
문제 인증 미들웨어를 만들고 사용하려고했다. 이렇게 정의해두고 서버를 시작하면 Route.get() requires a callback function but got a [object Undefined] 이런 에러가 뜬다. 에러를 해석해보면 Route.get()에는 콜백 함수가 필요하지만 [객체 정의되지 않음]. 이게 뭔소린지 이해하면서 코드를 봤더니 엄청난 실수를 했다. AuthController 객체를 가져와놓고 인스턴스 생성을 하지 않았다. 해결 인스턴스 생성후 생성한 인스턴스로 바꿔주었다. 해결완료!!
문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다. 예를 들어, 15번으로 지정된 기사단원은 15의 약수가 1, 3, 5, 15로 4개 이므로, 공격력이 4인 무기를 구매합니다. 만약, 이웃나라와의 협약으로 정해진 공격력의 제한수치가 3이고 제한수치를 초과한 기사가 사용할 무기의 공격력이 2라면, 15번으로 지정된 기사단원은 무기점에서 공격력이 2인 무..
유닛 테스트 코드 오류 예시 설명 repositories 1. User Repository Unit Test 테스트하려는 테스트스위트 4가지가 정의 되어 있고 나머지는 통과가 됬는데 updateToken Method테스트에서 실패를 했다라는걸 간략하게 보여줌 2. User Repository Unit Test > updateToken Method 해당 테스트에서 에러가 난걸 강조해서 보여준다. 3. expect(received).toBe(expected) 둘을 서로 비교해주는 메서드인걸 주석으로 알려주며 아래의 예상값과 현재값이 담겨있다. Expected의 예상값은 "upload refreshToken" Received의 현재값은 {} 즉, 실패한 원인을 알려주고 어느 위치에서 에러가 낫는지도 친절하게 ..