Docker 컨테이너의 생명주기
·
Docker
도커 컨테이너의 생명주기는 생성 > 시작 > 실행 > 중지 > 삭제로 이루어 진다 생성~실행 docker run 으로 컨테이너를 생성하고 실행했었는데, 이를 docker create와 docker run으로 쪼갤 수 있다. 컨테이너 중지 컨테이너의 중지는 docker stop과 docker kill로 할 수 있다. stop kill 하던 작업을 완료하고 중지 바로 중지 컨테이너 삭제 docker rm : 실행 중인 컨테이너는 중지한 후에 삭제 가능하다. docker rm `docker ps -a -q` : 모든 컨테이너를 삭제한다. (Linux) FOR /F %i IN ('docker ps -qa') do docker rm %i : 모든 컨테이너를 삭제한다. (window) docker rmi : 이미지..
통합 테스트(Intergration Test)
·
Node.js/TDD
통합 테스트란 ? 통합 테스트는 모듈을 통합하는 단계에서 수행하는 테스트로, 단위 테스트의 수행 결과 모듈이 정상적으로 작동하는 것을 확인 했다면, 이 모듈들을 연동해서 통합 테스트를 수행한다. 통합 테스트를 통해 모듈들의 상호작용이 잘 이루어지는지 검증, 통합 과정에서 발생하는 오류를 찾을 수 있다. Supertest 란? nodejs http 서버를 테스트 하기 위한 모듈로, supertest 모듈을 이용해 통합 테스트를 쉽게 구현할 수 있다. 유닛테스트(Jest) - 통합테스트(supertest) 에러 처리를 위한 통합 테스트 작성
가짜 난쟁이 고르기
·
Coding Test
문제 : 일과를 마치고 온 백설공주의 난쟁이가 일곱명이 아닌 아홉명으로 돌아왔다. 기존 일곱 난쟁이의 키의 합이 100인 것을 기억해 내어 진짜 난쟁이 일곱명을 찾으려 한다. 입력 : 배열안에 난쟁이의 키가 주어진다. 키는 100을 넘지 않는다. 출력 : 입력된 순서대로 일곱 난쟁이의 키를 배열에 담아 출력한다. 입력 예제 1 : [20, 7, 23, 19,10, 15, 25, 8, 13] 출력 예제 1 : [20, 7, 23, 19,10, 8, 13] 해결 방법 전체 난쟁이들 키의 합에서 가짜 난쟁이 두명의 키를 빼면 100이 되야 하는 점을 이용한다. function solution(arr) { let result = []; for (let i = 0; i < arr.length; i++) { for..
node-mocks-http, beforeEach
·
Node.js/TDD
단위테스트에서 http 객체 (request, response)를 얻으려면 node-mocks-http를 이용하면 된다. npm install node-mocks-http let req = httpMocks.createRequest(); let res = httpMocks.createResponse(); 이전 포스팅에(2023.02.23 - [Node.js/TDD] - 단위 테스트 create) 이어서 createProduct에 req.body를 넣어주기 위해서 node-mocks-http를 이용해 req와 res를 선언하고 req.body에 넣어줄 json 데이터 파일을 생성해서 req.body에 할당후, productModel.create 메서드가 newProduct와 함께 호출되는지 체크해주었다. ..
단위 테스트 create
·
Node.js/TDD
단위 테스트가 독립적이어야 하는 이유 의존적인 부분을 구현하기가 까다로운 경우가 있고, 의존적인 부분의 상태에 따라서 테스트 하는 부분의 결과에 영향을 받을 수 있다. 그래서 단위 테스트는 특정기능만 분리해서 독립적으로 사용하며, just.fn()으로 이것을 해결할 수 있다. jest.fn() Mock 함수를 생성하는 함수이다. Mock 함수는 단위테스트를 작성할 때, 해당 코드가 의존하는 부분을 가짜로 대체하는 일을 해준다. const mockFunction = jest.fn(); // Mock(가짜)함수 생성 mockFunction(); // 가짜 함수 호출 mockFunction('hello'); mockFunction.mockReturnValue('가짜함수 반환') // mockReturnValu..
[JS] forEach, map, filter, reduce
·
Js/Javascript
forEach forEach()메서드는 주어진 함수를 한번씩 각각의 array 요소들에게 실행한다. for문 대신 사용하면 될 듯하다. a = [10, 11, 12, 13, 14, 15]; a.forEach((currentElement, index, array) => { console.log(currentElement, index, array) }); map map()메서드는 배열(array)내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 가진 새로운 배열을 만들어낸다. 예시 ) a = [10, 11, 12, 13, 14, 15]; let result = a.map((currentElement, index, array) => { return currentElement * currentEleme..
Promise 사용법 (resolve,reject) &promise.race(),all()
·
Js/Javascript
Promise 특징 Promise는 비동기적인 작업 처리를 위한 도구이다. Promise는 then과 catch로 사용할 수 있다. Promise를 반환하는 함수 자체는 동기적으로 실행되며, Promise를 반환하는 함수일 경우 비동기적으로 처리된다. 비동기적인 작업을 처리할 때, 작업의 성공 유무에 따라 표준화된 방식(then, catch)으로 처리할 수 있게 해주기 때문에 사용한다. 네이스팅 방식과 체이닝 방식이 있으며, 일반적으로 체이닝 방식을 사용한다. Promise 만드는 법 Promise 실패 했을 때 ( reject ) Promise all and race
TDD ( Test Driven Development )
·
Node.js/TDD
describe("",()=>{ beforeEach(()=>{ }); it("",()=>{ }); it("",()=>{ }); it("",()=>{ }); })​ npm install jest supertest node-mocks-http --save-dev 테스트 주도 개발을 해야하는 이유 >> 더 안정적인 어플리케이션을 만들기 위해 디버깅 시간의 단축 : 자동화된 유닛 테스팅으로 특정 버글르 쉽게 발견 많은 테스트 코드와 작성된 어플리케이션은 훨씬 더 안정적 재설계 시간의 단축, 확장에 용이 테스트에 사용할 모듈을 추가 Jest : 단위 테스트를 위한 모듈 node-mocks-http : 단위 테스트를 위한 모듈 spuer test : 통합 테스트를 위한 모듈 npm install jest super..
Node.js란 무엇인가
·
Node.js
공식사이트에 Node.js는 "비동기 이벤트 기반 자바스크립트 런타임"이라고 명시되어 있다. 풀어쓰자면, 크롬 V8엔진을 기반으로 구동하는 자바스크립트 런타임으로, 구글에서 만든 크롬 브라우저에는 자바스크립트를 실행 할 수 있는 v8엔진이 내장되어있다. 엔진은 js코드를 실시간으로 읽고 해석하고 실행한다(즉, js를 컴퓨터가 실행하는 코드로 변환). 이 v8엔진을 크롬 내부에서만 쓰는게 아니라 크롬 바깥에서 꺼내 쓸 수 있도록 별도의 실행환경을 구축 한 것이다. 웹 서버를 Node.js로 구축하면 속도가 빠른가? Node.js가 js라는 프로그래밍 언어를 쓰기 때문에 인터프리터 기반의 프로그래밍 언어의 특성상 자바나 다른 컴파일러 기반의 언어로 서비스를 구현하는 것 보다 느릴 수 있지만, 자바스크립트는 ..
구현 : 시뮬레이션과 완전 탐색 - 문자열 재정렬
·
Coding Test/코테 이론
문제 설명 알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어진다. 이때 모든 알파벳을 오름차순으로 정렬해 출력한 뒤, 그 뒤에 모든 숫자를 더한 값을 이어서 출력한다. # 입력 조건 첫째 줄에 하나의 문자열 S가 주어진다. ( 1