TIL
-
TIL.91 Javascript_Filter 함수TIL 2021. 1. 7. 12:54
Filter() 배열을 순회하며 요소마다 조건 확인 후 조건을 만족하는 원소들로 구성된 새로운 배열 리턴한다 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다. 이름 그대로 요소를 걸러내는 것을 목적으로 한다. let newArray = arr.filter(callback(currentValue[, index, [array]]) { // return element for newArray, if true }[, thisArg]); 반환 값 테스트를 통과한 요소로 이루어진 새로운 배열. 어떤 요소도 테스트를 통과하지 못했으면 빈 배열을 반환합니다. parameter 눈으로 확인하기 let numbers = [1, 4, 9] let parameters = numbers.filter((..
-
TIL.89 Javascript_map 함수TIL/Javascript 2021. 1. 5. 13:52
map() method는 호출 배열의 모든 요소에 대해 제공된 함수를 호출 한 결과로 채워진 새 배열을 만듭니다 . 배열.map((요소, 인덱스, 배열) => { return 요소 }); map함수는 callbackFunction을 실행한 결과를 가지고 새로운 배열을 만들 때 사용한다. array.map(callbackFunction(currenValue, index, array), thisArg) callbackFunction, thisArg 두개의 매개변수가 있고 callbackFunction은 currentValue, index, array 3개의 매개변수를 갖는다. currentValue : 배열 내 현재 값 index : 배열 내 현재 값의 인덱스 array : 현재 배열 thisArg : ca..
-
TIL.88 Decorator(토큰 인가)_Unit TestTIL/Python 2021. 1. 4. 16:35
유닛 테스트를 작성하다 보면 토큰 인가를 구현하여 우리 서비스에 대한 접근을 허가하고자 할때 utils.py를 이용한 토큰 인가를 데코레이터로서 활용한다. 이를 이용해 유료/무료 서비스 가입자 인지, 우리 서비스를 이용하고 있는 회원이 맞는지 등을 토큰을 이용해 검증하고 그에 맞는 접근 권한을 부여한다. 그럼 유닛테스트에서는 이를 어떻게 구현 할 수 있을까? 정답은 없고 다양한 방법이 있겠지만 두 가지 방법을 알아보도록 하자. 1. setUp에 토큰을 생성하고 setUp 메서드를 활용하는 방법 (추가로 아래와 같은 오류가 날때는 setUp의 테이블 id를 생성하거나 지워보자 id값을 기본적으로 추가할때마다 자동으로 올라가는점을 잊지말자) django.db.utils.IntegrityError: (1062..
-
TIL.86 Mocking, PatchingTIL 2021. 1. 2. 23:37
왜? Mocking을 사용해야 할까 프로젝트 진행간 KaKao 소셜 로그인 API를 맡아 진행하던 중 프론트에서 카카오플랫폼으로 요청하여 얻은 kakao_token을 전달받고 전달받은 kakao_token을 이용해 카카오플랫폼으로 전달받은 kakao_token을 이용하여 토큰에 해당하는 유저 정보를 가져와보았다. 2차 프로젝트 시작 전부터 소셜 로그인 API를 구현해보고자 목표를 세웠다. 한가지 아쉬운점은 현재 진행하는 Clone 프로젝트는 항공 예약을 주된 기능으로 사용하여 kakao_token을 이용해 카카오 서버에서 받은 유저 정보를 모두 활용하여 바로 우리 서비스에 가입시킬수 없었다. 현재 프로젝트 중인 서비스에 가입하기 위해선 카카오에서 제공하지 않는 english_name, phone_numb..
-
TIL.85 Unit_test_실습_2TIL 2021. 1. 1. 13:58
지난 실습 코드로 아래와 같은 테스트 코드를 작성해보았다. 역시 처음이 어렵지 한번 하고 나니 어느정도 감이 잡힌다. 추후 뷰 작성시에도 테스트 코드는 필수이므로 이번 프로젝트에서의 목표는 소셜 로그인과 테스트코드로 정했다!! import unittest, json, jwt, bcrypt from datetime import datetime, timedelta from django.test import TestCase, Client from user.models import User, Gender, Country from my_settings import SECRET_KEY, JWT_ALGORITHM class SignUpTestCase(unittest.TestCase): def setUp(self): ..
-
TIL.84 Unit Test_실습TIL 2020. 12. 31. 15:25
이번 프로젝트에서는 반드시 내가 작성한 코드를 테스트하는 유닛테스트 코드를 함께 PR을 올려야 한다. 그럼 Wecode 자료를 이용해 실습을 해보도록 하자 아래 테스트 코드를 모두 fail -> success 로 바꿔보았으니 이를 이용해 나의 회원가입/로그인 뷰를 검증하는 테스트 코드를 만들어보자! Test 1 # Test.1/ views.py import json from django.views import View from django.http import HttpResponse, JsonResponse class JustView(View): def get(self, request): return JsonResponse({'message':'Just Do Python with >Wecode'}, st..
-
TIL.83 Unit TestTIL 2020. 12. 30. 14:03
개발한 시스템이 정상적으로 동작하는지 확인하는 TEST 그 방법 중 가장 활용성이 높은 Unit Test를 알아보자 먼저, Test 방법 중 메뉴얼 테스트라는 방법을 우선 알아보자 장점 : 직관적으로 모든 기능을 테스트하기 때문에 코드를 모르는 사람도 이해하기 쉽다. 단점 : 1. 테스트 실행 속도가 굉장히 느리다. 2. 인력 소모가 크고 3. 불안정성이 높고 4. 많은 비용이 발생한다. 따라서 자동화된 Test가 매우 중요하다 메뉴얼 테스트보다는 테스트를 자동화해야한다. (실제로는 메뉴얼 테스트를 실행하는 회사가 많다고 한다!) 개발 프로세스에서의 테스트 비율 1. End To End Test -> cypress (E2E 자동화 Tool) 장점 : 사용자의 실제 시스템 환경에서 동일한 테스트가 가능하다..
-
TIL.82 Git rebaseTIL 2020. 12. 30. 13:31
이전까지 프로젝트에서는 단순히 main과 feature 브랜치만 사용했었다. 추가로 사실 나의 Git PR을 보면 commit 메시지가 생각보다 많은 것을 확인 할 수 있었다. 이 커밋들은 추후 main 브랜치에 Merge 될 경우 모든 커밋 기록과 함께 Merge commit도 함께 남게된다. 만약 규모가 큰 프로젝트의 경우 이러한 커밋들로 인해 독립된 브랜치에서 로직 하나를 작성하고 수정하더라도 다른 작업과 그 내역이 겹쳐 구분하기 어려워지고 main 브랜치를 공유하는 개발자가 많을 수록 커밋의 수는 당연히 많아지는데 이를 branch history가 복잡해진다고 표현한다. 이러한 문제점을 해결하기 위해서 Rebase를 사용한다고 한다. 먼저 브랜치 병합 방법(전략)으로는 2가지 방법이 있다. 1. ..