본문 바로가기
반응형

개발128

should.have.property가 제대로 동작 안할 때 should.have.property가 제대로 동작을 하지않았습니다. 문제의 코드는 아래와같습니다. 생각대로라면 정상적으로 등록을 한후에 result를 가지고있으므로 통과해야합니다. 그러나 테스트는 계속실패했습니다. 머리로 도저히 이해할수가 없었습니다. 로직상 틀린게 하나도 없었기때문입니다. 하지만 문제는있었습니다. 찾았나요 ? 문제는 바로 아래와 같습니다. 정확하지는 않지만 필자의 생각으로는 204코드는 return값이 비어있다는것을 의미하므로 가지지 않는것같습니다. status를 200으로 바꾸면 정상적으로 작동합니다. 2020. 5. 3.
node.js TDD에 필요한 모듈 TDD에 도움을 줄 수 있는 모듈이 있다. mocka should supertest 위 세가지 모듈을 이용하여 테스트코드를 보다 쉽게 작성할 수 있다. 2020. 5. 1.
node.js 란 ? 이벤트 기반의 I/O 비동기 프레임워크 어떠한 요청이 오면 node는 이벤트라는것으로 만들어서 큐에 쌓는다. 이벤트 루프를 이용하여 큐에있는 이벤트를 실행하고 요청한 클라이언트에 답해준다. 이벤트 루프는 싱글 스레드로 이루어져있다. (node가 싱글 스레드가 여기서 나온말) 무거운 동작(disk에 있는 파일읽을때, 외부 네트워크 통신을 해야할때 등)은 이벤트루프가 실행하지 않고 다른 스레드에게 위임한다. 모듈 시스템 모듈이란 독립적인 하나의 소프트웨어이다. node.js는 파일은 모듈이된다. 2020. 4. 30.
이 클래스는 아무것도 상속받지 않을까요 ? Door라는 클래스를 하나 생성했다. 여기서 문제! 이 클래스는 상속을 받고 있을까요 ? 정답은 Yes입니다. 언뜻보기에는 아무것도 받지 않는것 같아보입니다. 하지만 getSuperClass() 메소드도 결과를 찍어보면 아래와 같이 나옵니다. 어째서 이런 결과가 나올까요? 클래스를 상속받지 않는 클래스에는 기본적으로 Object 클래스를 상속받도록 해놨기때문입니다. 그렇기때문에 모든 클래스에서는 Object가 가지고있는 메소드를 사용할 수 있는것입니다. 2020. 4. 19.
[회원가입] 회원가입 이메일 인증 구현 Build.gradle 파일에 dependencies 부분에 추가 해줍니다. 이메일 인증을 받기 위해서 이메일을 적고 인증번호를 보낼 수 있는 버튼과 인증번호를 입력하고 알맞는 값을 입력하였는지 확인할 버튼을 생성해야한다. 이메일을 보내는 부분 이메일을 보내는 버튼을 눌렀을 때 동작하는 function입니다. isEmail function을 이용하여 이메일 형식인지 검사합니다. (select 방식으로 바꾸셔도 됩니다. 필자는 귀찮아서 정규식으로 검사했습니다.) api를 호출하여 성공적으로 보냈으면 아무메세지를 안띄웠습니다. 원하시는 메세지를 출력하시거나 알려주시면 됩니다. 실패시에는 오류, 잠시 후 재시도라는 메세지를 띄웠습니다. 호출을 받는 Controller 부분입니다. 세션을 얻어오고 입력한 ema.. 2020. 4. 4.
[Spring] java.lang.RuntimeException: Could not invoke method: .. defined in class ... so no params were used. Test 코드를 작성하는데 아래와 같은 오류가 발생했다. 필자는 paramsForTestFree 메소드를 작성한 이후에 발생하여 paramsForTestFree메소드만 주구장창 봤는데 발생원인은 따로있었다... 원인은 이부분이었다. 이상한것을 알겠는가? 아래와같이 public을 붙여주면 정상적으로 동작한다..... 2020. 3. 30.
[Spring] API 설계시 주의사항 Return type을 Entity로 하면 안된다. DTO로 변환을 해서 반환을 해야한다. 이유 1. 내부설계가 노출된다. 2. Entity가 변하게 될경우 API 스펙이 바뀌므로 API를 호출하는측 소스도 바뀌어야한다. 2020. 3. 27.
[Spring] 비밀번호 암호화 실제 서비스에서는 비밀번호와 같이 치명적일 수 있는 데이터는 암호화해서 저장해야한다. 비밀번호를 예제로 암호화에 대해서 알아보도록 하겠다. 생각해야 할 로직은 크게 아래 두 가지로 나눌 수 있다. 1. 가입할 때 비밀번호 암호화 2. 로그인할 때 매칭하는 방법 바로 예제를 보도록 하겠다. 비밀번호 암호화를 도와줄 무언가가 필요하다. 필자는 Spring Security에서 제공해주는 BCryptPasswordEncoder를 사용해서 진행할 것이다. 사용할 BCryptPasswordEncoder를 빈으로 등록을 해준다. 암호화를 할 Class에서 @Autowired를 통해서 주입받는다. 실제 DB에 Insert하는 부분에서 BCryptPasswordEncoder가 제공해주는 encode를 통해서 암호화를 진.. 2020. 3. 27.
[javascript] 페이지 첫 요청시 안되는 오류 (두번째부터는 접근될때) 필자는 아래와 같이 페이지이동을 위한 a태그와 function을 하나 만들었다. 그러나 이상한 오류가 발생했다. 첫 요청때는 실패시에나 성공시에 뜨는 alert창이 뜨지도않을뿐더러 아무런 이벤트도 발생하지않았다. (추후에 알고보니 /로 이동했음) 문제점은 어이없게도 a태그의 href에 있었다. 아래부터는 필자의 추측이다. /api/board를 요청했지만 a태그의 기본값이 /이고 /를요청했다. /로 이동을 한 상태기때문에 그 후의 이벤트는 진행되지않았다. 라는것이 필자의추측이다. (정확한 이유를 아시는분은 댓글로 알려주시면 감사하겠습니다) 해결방법은 매우 간단하다. a태그에 href를 없애면된다. 2020. 3. 18.
[Spring]class java.lang.String cannot be cast to class org.springframework.security.core.userdetails.User 필자는 User타입을 쓰다가 UserDetails 타입으로 변환을하였으나 해결방법은 동일하다고 생각하여 글을 남깁니다. Spring Security + JWT를 적용하다가 어이없는 실수였지만 혹시나 필자와같은 실수를 하는분들께 도움이 되고자 글을 남겨본다. 우선 필자는 authenticate에서 Token에 user.getUsername()을 보냈고 Success Handler에서 값을 받아서 사용하려고 하는 도중에 class java.lang.String cannot be cast to class org.springframework.security.core.userdetails.User 이러한 오류가 났다. String타입을 User타입으로 변환하지 못한다는 오류인데 왜 나는지 찾지 못했었다. 원인은 .. 2020. 3. 15.
[Spring] Spring boot란 무엇인가 ? Spring Boot란 무엇인가 제품수준의 Spring 기반 Application을 만들때 도와준다. 개발자가 일일히 정의하지않아도 가장 널리 사용된다고 생각되는 설정(Spring 플랫폼뿐만 아니라 제3의 라이브러리까지)을 기본적으로 제공해준다. 목표 - 모든 Spring 개발을 할때 더 빠르고 폭넓은 사용성을 제공해준다. - 일일히 설정하지 않아도 설정되어져있는것들을 기본으로 제공해준다. 그러나 개발자가 쉽고 빠르게 원하는대로 바꿀 수 있다. - non-functional features 제공 (ex.. security, embedded servers 등) - 더이상 XML설정과 code generation을 하지않는다. 참고 : https://docs.spring.io/spring-boot/docs/.. 2020. 3. 4.
[Spring] Spring boot parent dependencyManagement Spring boot 의존성을 받아오기 위해서는 2가지 방법이있다. 를 이용하는 방법과 를 이용하는 방법니다. org.springframework.boot spring-boot-starter-parent 2.2.5.RELEASE org.springframework.boot spring-boot-dependencies 2.2.5.RELEASE pom import 언뜻보면 같은것같지만 확실한 차이점이 있다. 를 사용하게된다면 필요한 dependency들을 가지고오는것 뿐만아니라 java버전을 1.8로 기본세팅 인코딩방식을 UTF-8로 세팅 리소스들을 읽는기능등 다양한기능을한다. 자세한기능은 여기에서 확인가능하다. 반면에 는 parent의 다양한기능은 제외하고 dependencyManagement기능만 수행하.. 2020. 3. 3.