전체 글 221

supertest 테스트 코드 작성

지난 포스팅에선 단위 테스트에 많이 쓰이는 jest의 간단한 사용법과 모킹 함수가 무엇인지 정리했다. 이번에는 통합 테스트에서 많이 사용하는 supertest를 알아보겠다. supertest란 ExpressJS 통합 테스트용 라이브러리 내부적으로(가짜로) 익스프레스 서버를 구동시켜 가상의 요청을 보낸 뒤 결과를 검증한다. 기능을 검증하는 단위 테스트들의 상호 연결이 잘 되었는지 확인하는 통합 테스트에서 사용한다. API 서버를 만들고 HTTP 검증 도구로 슈퍼 테스트를 사용한다 supertest 설치 및 설정 1. 설치 npm i supertest -D 2. 테스트 데이터 베이스 설정 jest는 데이터베이스에 접근하지 않기 위해 모킹 함수를 써서 했다 치고 하고 값을 지정해주어 넘어갔지만, 통합 테스트는..

coding/JS 2022.08.11

jest 테스트 코드 작성 방법

테스트 코드가 무엇인지 어떤 종류가 있는지는 지난 포스팅에서 언급했기 때문에 이번엔 실제 그 테스트 코드를 작성하는 방법과 어떻게 코드를 짜야하는지에 대해서 알아보겠다. 간단하게 정의만 집고 가자면 테스트 코드란 작성한 코드에 문제가 없는지 테스트하기 위해 작성하는 코드 테스트 코드의 종류 - 단위 테스트(유닛 테스트) 가장 작은 규모의 기능을 테스트 - 통합 테스트 여러 가지 기능을 합쳤을 때 생시는 문제를 방지하기 위한 테스트 - E2E 테스트(end-to-end 테스트) 백앤드부터 시작해서 최종적으로 웹페이지가 원하는 대로 동작하며 원하는 데이터를 잘 보여주는지 확인 jest란 jest란 페이스북에서 만들어서 리액트와 더불어 많은 js 개발자들이 사용하고 있는 테스팅 라이브러리이다. 주로 단위 테스..

coding/JS 2022.08.11

TIL 220810

주특기 심화 주차가 끝나간다. 어제 만든 통합 테스트를 좀 더 수정 및 보완을 해서 마무리하였다. 각자의 파트에서 통합 테스트를 진행해보니 정삭적으로 작동되었지만, 각각의 파트 통합 테스트를 한 곳에 모아서 테스트를 진행하니 크고 작은 문제들이 발생했었다. 나 같은 경우 좋아요 기능은 따로 인풋을 넣어 주는 것이 아닌 데이터베이스의 데이터 유무에 따라서 게시물을 보여주기도, 좋아요를 누르거나 취소를 하는 동작을 하는데 데이터가 없으면 기능이 안 되었었다. 그래서 어제는 임의로 내가 데이터를 만들어서 정상 작동을 했었는데 다른 사람들이 내 좋아요 기능을 테스트할 땐 사전에 작업해 둔 데이터가 없다 보니 테스트를 정상적으로 작동할 수 없었다. 그래서 회원가입을 하고, 게시물까지 작성하는 코드를 넣어서 누구나..

일지/TIL 2022.08.10

Side effect, Decoupling, 디자인 패턴

side effect 사전적 정의 : 부작용 프로그래밍의 side effect 사전적 정의와 다르게 프로그래밍의 사이드 이펙트는 꼭 부정적인 말은 아니다. 예상한 결과와 다르게 결과가 다르게 나타나는 현상을 말한다. 실행 도중 어떠한 객체를 접근해서 변화가 발생하는 행위 함수를 실행할 때 return 값과는 별개로 발생하는 프로그램 상태 변경 개발 영역에서는 버그라고 하기도 한다. 구현하고자 하는 형태의 기능이 동작이 되지 않고, 어떠한 다른 요인으로 인해서 동작을 못하거나 값이 다른 올바르게 나오지 않는 여러 가지 상황을 사이드 이펙트라고 한다. 빈 구문이 아니라면 반드시 하나의 사이드 이펙트를 가져야 한다. 빈 구문이 아닌데 사이드 이펙트가 일어나지 않는 구문은 일반적으로 프로그래밍 에러를 가리킨다...

coding/IT, CS 2022.08.10

TIL 220809 - 컨디션 관리

으... 오늘은 컨디션이 너무 안 좋아서 공부를 많이 하지는 못했다. 늘 똑같이 대략 2시까지 공부하고 자러 가는데 어제도 똑같이 그렇게 했다. 근데 집에 모기가 한 마리 들어왔는지 밤새 귀 옆을 앵앵거려서 잠을 거의 자지 못했다. ㅠ 근데 하필 그날이 월요일에 그러니까 더 힘들었다. 보통 일요일에 늦잠을 자면 난 그날 밤에 잠이 잘 오지 않아 일요일에서 월요일로 넘어가는 새벽까지 공부를 했다. 아마 4시쯤 넘어서 누웠는데 5시쯤 잠든 것 같다 그래서 월요일 3시간 정도밖에 못 잤던 상황이었다. 하지만 내가 그날 3시간을 자더라도 전날 많이 잤고, 큰 무리 없이 하루를 보냈다. 이제 오늘 다시 잘 자면 다시 수면 패턴을 맞출 수 있으니까 하면서 누웠는데 모기 한 마리 때문에 어제 진짜 한숨도 못 잤던 것..

일지/TIL 2022.08.09

class의 호이스팅

hoisting이란? 변수와 함수의 선언문을 해당 스코프의 꼭대기로 끌어올리는 동작을 의미한다. 이 과정에서 선언문 자체는 옮겨지지만, 함수 표현식의 대입문을 포함한 모든 대입문은 끌어올려지지 않는다. 예시 console.log(a) // undefiend var여서 호이스팅 됬지만 undefiend로 초기화 상태 var a = 1; console.log(a) // 1 1로 초기화 상태 console.log(b) // Uncaught ReferenceError: b is not defined let b = 1; console.log(c); // ReferenceError const c = '1'; print() // d function print() { console.log('d') } print2() ..

coding/JS 2022.08.09

객체지향 class (ES5/ES6)

Class 객체를 생성하는 생성자 함수 js에서는 class가 생성자 함수 역할을 대신함 ES6에서 class 개념 추가 객체 생성 : object 생성법 / class 생성법 object 생성법 : 붕어빵을 하나하나 만드는 방법 class 생성법 : 붕어빵 틀을 만들어 틀을 이용해 붕어빵을 찍어내는 방법 object 생성법으로 객체 만들기 var potBung = { base : '밀가루'; flavor : '팥'; } var chouxBung = { base : '쌀가루'; flavor : '슈크림'; } var pizzaBung = { base : '튀김가루'; flavor : '피자'; } . . . 비슷한 객체를 만든다면 object 생성법은 하나하나 직접 작성을 해줘야 하는 단점이 존재한다. ..

coding/JS 2022.08.09

TIL 220808

오늘은 테스트 코드에 대해 조금 진전이 있었다. 주말까지만 하더라도 대략적인 개념은 이해가 약간 되는데 왜 사용해야 하는지 어떻게 사용해야 하는지 감이 전혀 오지 않았다. 주말에 개념을 좀 더 보고 오늘 여러 자료들을 보면서 좋은 예제들을 눈으로 많이 보면서 어떻게 작동되는지 조금 감을 익혔다 물론 아직 단위 테스트 정도만 사용하는 것 같은데 이것도 많은 발전이라 생각한다 오늘 목표가 단위 테스트 만이라도 이해하자 였으니까 목표를 달성했다 생각한다. 내일은 통합 테스트까지 사용자가 내가 정한 경로에 정한 메서드를 사용해서 요청을 하면 생각 하대로 움직이는 테스트 코드를 구현해볼 생각이다. 정말 막막하던 것들도 자꾸 보고 찾아보면 결국 답은 조금씩 나오는 것 같다. 모르는 게 있다면 팀원들과 의견 공유하는..

일지/TIL 2022.08.09

테스트 코드 종류와 테스트 피라미드

테스트 코드란 작성한 코드에 문제가 없는지 테스트하기 위해 작성하는 코드 테스트 단위가 좀 더 쪼개질수록 어느 부분에서 에러가 발행했는지 좀 더 찾기가 쉬워진다. 테스트 코드의 종류 - 단위 테스트(유닛 테스트) 가장 작은 규모의 기능을 테스트 - 통합 테스트 여러 가지 기능을 합쳤을 때 생시는 문제를 방지하기 위한 테스트 - E2E 테스트(end-to-end 테스트) 백앤드부터 시작해서 최종적으로 웹페이지가 원하는 대로 동작하며 원하는 데이터를 잘 보여주는지 확인 TDD Test Driven Development의 약자로 테스트 주도 개발이라고 한다. 작은 단위의 테스트 코드를 작성하고, 이를 통과하면, 코드를 추가하는 단계를 반복하여 구현 즉, 바로 코드를 작성하는 것이 아닌, 테스트 코드를 먼저 만..

coding/IT, CS 2022.08.09

WIL 220807 4번째 주말

항해를 시작한 지 28일째 약 1달이 되었다. 처음에는 내가 버틸 수 있을까? 하는 마음이 매우 컸지만, 지금은 이제 그냥 모든 걸 해탈하고 눈뜨면 컴퓨터 앞에 앉는다. 하루 일과는 눈뜨자마자 코드를 보고 밥 먹는 시간만 빼고 계속 공부를 하고 있었다. 대략 새벽 1~2시쯤 컴퓨터를 끄고 바로 잠을 자서 또 다음날 눈을 뜨자마자 컴퓨터 앞에 앉는다. 사람은 적응의 동물이라고 그냥 이게 일상이 되었다. 솔직히 적응까지는 모르겠지만 그냥 하고 있는 것 같다. 다행히 일요일 하루 정도는 밀린 잠을 좀 자고 집안일을 하고 휴식을 좀 할 수 있다. 하지만 그것도 오후가 되면 다시 컴퓨터 앞에 앉아 공부를 하고 있다. 처음과 비교하면 내가 생각해도 미친것 같다. 그만큼 간절한 것이겠지? 이번 한 주 동안에는 nod..

일지/WIL 2022.08.07