목록Back (14)
현재노트
HTML 삽입 미리보기할 수 없는 소스 흔히 말해 API 컨트롤러를 테스트하는 작업이다. 저는 여기서 RestAssured 라는 테스트 라이브러리를 사용하여 설명하도록 하겠습니다. 잠깐 RestAssured를 설명하자면, spring에서는 기본적으로 MockMvc를 지원하는데 직관적이지 않고, 결과값을 체이닝 되는 점이 많아 간단하게 테스트할 수 도구가 RestAssured 입니다. HTML 삽입 미리보기할 수 없는 소스 SpringBootTest를 한꺼번에 돌리기 위해서는 port 를 Random을 돌리는 경우가 많기 떄문에 위처럼 설정을 해줘야 합니다. HTML 삽입 미리보기할 수 없는 소스 RestAssured 객체에 body에 json 값을 넣어주고 path를 입력해주면, E2E 테스트가 가능하며..
통합 테스트는 Respository나 Service단 로직을 검증하는 테스트입니다. HTML 삽입 미리보기할 수 없는 소스 springboot 기준으로 repository를 테스트할 때 @SpringBootTest 를 사용해도 되지만, Bean이 너무 많이 불러와져서 실행속도를 저하시키는 단점이 있습니다. 그래서 @DataJpaTest 를 사용하여 필요한 Bean만 불러들려 사용합니다. 테스트할 repository를 @Autowire로 빈을 가져오고 사용을 합니다. 서비스단을 테스트하는 방법은 mockito로 가짜 객체를 생성하는 방법과 h2 DB를 사용할경우에는 이것을 그대로 사용하는 방법이 있습니다. mockito로 작업하는경우 실제 DB를 사용하는것이 아닌 Fake 객체를 이용하여 반환한 값을 검증..
HTML 삽입 미리보기할 수 없는 소스 테스트는 테스트 대상 범위나 성격에 때라 E2E 테스트, Integration Test(통합 테스트), Unit Test(단위 테스트) 등 3가지로 구분합니다. 현재 여기 페이지에서는 단위 테스트에 대해서 설명을 할것입니다. 단위테스트는 클래스 범주 내에서 작은 단위(함수 단위)의 기능에 대한 유효성을 검증하는 테스트입니다. 매우 간단하고 명확하며 빠르게 실행된다는 특징이 있습니다. 본 문서는 asserts-core, junit-jupiter를 사용하여 테스트 코드를 작성하였습니다. dependencies { testImplementation 'org.assertj:assertj-core:3.22.0' testImplementation 'org.junit.jupit..
Springboot프로젝트에 Redis를 적용하는 방법에 대해 포스팅합니다. Jedis보다 Lettuce으로 설정하는 이유는 lettuece가 비동기 이벤트 드리븐 방식의 Netty 라이브러리 기반이라 속도나 성능 측면에서 우위이며, 해당 내용에 대해서 간단한 표를통해 이해하고 바로 설정방법으로 넘어가겠습니다. 의존성 추가 프로젝트의 gradle 버전이 7이므로 build.gradle의 dependencies에 compile이 아닌 implementation으로 적용합니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotation..
다들 nodejs으로 개발함에있어 프론트엔드 기술로 여러가지 기술(react, vue, jsp 등)들을 사용할 것입니다. 이번 포스팅에서는 프론트엔드 기준을 react으로 사용하고, nodejs로 API 데이터 호출을 하는 과정에서 인풋 데이터 즉, form 내의 데이터를 json형태로 보내는 방법에 대해서 알아보겠습니다. if(this.fnValidate()){ var jsonstr = $("form[name='frm']").serialize(); jsonstr = decodeURIComponent(jsonstr); var Json_form = JSON.stringify(jsonstr).replace(/\"/gi,'') Json_form = "{\"" +Json_form.replace(/\&/g,'\"..
Parameter index out of range (4 > number of parameters, which is 3) 쿼리문을 작성하다보면 HediSQL 같은 툴에서 사용하던 쿼리에 따옴표 내 파라미터만 수정하는 경우가 가끔씩 있습니다. mybatis 에서 따옴표안에 파라미터 선언 시 생기는 이슈이며, 쿼리문 변수선언 부분의 따옴표를 지우고 #{}, ${} 등의 변수 형태로 적용해주면 이슈가 해결됩니다.
PC브라우저, 앱 등 회원에 대한 정보를 사용하는 곳에서 자동로그인, 자동아이디입력 등을 경험해본 적이 있습니다. 쿠키는 재사용할 정보들을 브라우저, 앱 등에 저장하고, 필요에의해 꺼내서 사용할 수 있습니다. 자주찾는 웹사이트에서 로그인 할때 본인의 로그인 폼에서 아이디가 자동으로 입력되거나 할때가 그 예시입니다. 쿠키의 경우 세션과는 달리 사용자 클라이언트 PC에 저장이 되므로 보안적인 면에서 제약이 있습니다. 하지만 특수한 경우로 세션 사용이 여의치 않거나 할때에는 쿠키를 적절히 사용해야 하는데 이때에는 쿠키의 유효시간을 조정하여 보안적인 이슈를 최소화 할 수 있습니다. 사용방법 public void CookieTestClass(HttpServletRequest request, HttpServletR..
IFNULL은 해당 필드의 값이 NULL을 반환할때 다른 값으로 출력할 수 있도록 하는 함수입니다. SELECT IFNULL(필드명, "대체할 값") FROM 테이블명; 물론 하나의 필드의 값 뿐만아니라 , 연속적으로도 활용 할 수 있습니다. 다음은 IFNULL을 사용한 예입니다. 위의 데이터는 3개의 필드에서 무작위로 NULL 값이 존재합니다. 하지만 3개의 필드중 값이 존재한다면 그 값은 동일한 경우입니다. 만약 keyword 와 3개의 필드의 값중 하나를 출력하려 한다면 IFNULL을 활용하여 다음과 같이 사용할 수 있습니다. SELECT keyword, IFNULL( common_rep, IFNULL( fur_rep, makeup_rep ) ) as syn_2 FROM syn_color ; 출력 결과