분류 전체보기 439

fork 저장소 동기화

$ git remote add origin-flit 원 저장소 주소 $ git remote -v originhttps://github.com/brownbears1/flit.git (fetch) originhttps://github.com/brownbears1/flit.git (push) origin-flithttps://github.com/takluyver/flit.git (fetch) origin-flithttps://github.com/takluyver/flit.git (push) 외부 저장소 최신 내용 가져오기 $ git fetch origin-flit 다음 merge를 할 브랜치로 변경한 다음, 위에서 가져온 최신 내용을 merge $ git checkout master $ git merge or..

Git 2022.06.09

블로그-V3. JUnit 트랜잭션

mockmvc 트랜잭션이랑 스프링으로 직접 save한 트랜잭션 두 개가 같이 돌고있다. 카테고리가 아직 save 커밋이 안되어서 인식을 못하기때문에 오류가 나는거야 1. 같은 트랜잭션을 태우거나 2. 카테고리도 mockmvc로 save하거나 레파지토리 save, find하는거 다 따로 트랜잭션을 가지고있어 서비스라는 곳에서 내가 만약에 hello 메서드에서 두ㄱㅏ지 일을 할거야. a레파지토리.save( ) b레파지토리.save( ) 따로 트랜잭션이 도는데 이 두개의 따로노는 트랜잭션을 하나의 트랜잭션으로 묶기 위한 @Transactional 지금문제는 mockmvc로 post를 save하는 트랜잭션 하나, 직접 repository에 카테고리를 save하는 트랜잭션 하나 따로따로 돌고있음 카테고리는 하나 ..

Spring/Tistory 2022.06.09

블로그-V3. 3가지 설정 파일

스프링은 설정 파일의 application- 뒤에 붙는 이름을 설정 파일의 이름으로 본다. 규칙! 이 프로파일명으로 어떤 설정 파일로 프로그램을 실행시킬지 결정한다. spring: profiles: active: - dev 기본적으로 잡은 프로파일이 dev이기 때문에 특별한 설정을 해주지 않으면 dev 파일로 실행된다. 직접 프로그램을 실행해서 포스트맨을 사용해 테스트할 때는 dev로 실행하고, JUnit으로 테스트할 때는 test 파일로 실행하고 싶다. 그래야 내 DB에 영향을 미치지 않을 것 같은데? 해당 파일을 어떤 설정 파일로 실행할 지 선택할 수 있는 어노테이션 @ActiveProfiles @ActiveProfiles("test") // test 설정파일로 실행 -> h2 @SpringBootT..

Spring/Tistory 2022.06.08

블로그-V3. Security 테스트 시 주의할 점

포스트 컨트롤러의 write 메서드를 테스트 해보자. @ActiveProfiles("test") @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class PostControllerTest { private MockMvc mockMvc; @Autowired private WebApplicationContext context; @BeforeEach public void setup() { mockMvc = MockMvcBuilders .webAppContextSetup(context) // spring의 환경을 알고있어야 set .apply(SecurityMockMvcConfigurers.springSecurity()) .build()..

Spring/Tistory 2022.06.08

블로그-V3. 유저 컨트롤러 통합 테스트

컨트롤러는 통합 테스트하자. testRestTemplate.exchange("/join-form", HttpMethod.GET, null, String.class); assertEquals는 레퍼런스 주소까지 비교한다. // RestController 테스트는 통합테스트로 하면 편하다 -> TestRestTemplate // Controller 테스트는 모델 값 확인이 안되기 때문에 WebMvcTest 사용해야함 MockMvc 필요 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class UserControllerTest { @Autowired private TestRestTemplate testRestTemplate; @Test..

Spring/Tistory 2022.06.07

Flutter 1. 메인 화면 위젯 구성

플러터의 의존성 관리 도구는 pubspec이다. https://pub.dev/ Dart packages Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter, AngularDart, and general Dart programs. pub.dev device를 웹으로 잡고 실행해보자. 이름을 StoreApp으로 바꾸면 test 폴더에 오류가 난다. 지금 테스트를 할게 아니기 때문에 테스트 폴더를 통째로 날려버리자. 어플의 여러가지 페이지가 있을거니까 import 'package:flutter/material.dart'; class MainPage exten..

Dart 2022.06.03

Dart JSON-Object 변환

다트도 버퍼가 있다. httpUrlConnection 같은것. 통신으로 받았다 치고 response에 json 데이터를 넣었다. 통신으로 받은 데이터의 타입을 정확히 적는다면 String이다. var response = '{"id": 119,"username": "hello1","password": "1234","email": "hello1@nate.com","created": "2022-31-23T06:31:21","updated": "2022-31-23T06:31:21"}'; void main() { print(response); } String 타입으로 받은 json 데이터를 map이나 클래스 타입으로 바꿔야 사용하기 편하겠다. json 데이터를 오브젝트 타입으로 변환하는 방법이 필수이다. Gson..

Dart 2022.06.03

Dart Map

자바에서의 HashMap, 파이썬의 dict 타입과 비슷하게 생겼다. String이 키값, dynamic이 밸류 오브젝트 타입이다. Map user = { "id":1, "username":"cos" }; void main() { print(user); } json과 완전 동일하게 생기진 않았다. 키값에 쌍따옴표가 없기 때문이다. 밸류에 스트링이 들어올 수도 있고, 다시 json이 들어올 수도 있고, 배열이 들어올 수도 있기 때문에 dynamic 타입으로 받아준다. 내가 만약 공공데이터를 받을건데 어떤 타입이 들어올지 모르겠어. 그럼 이렇게도 받을 수 있다. var Map user = { "id":1, "username":"cos" }; var user2 = { "id":2, "username":"ssa..

Dart 2022.06.03

블로그-V3. 실제 프로젝트에 JUnit 적용(레파지토리, 서비스)

실제로 시큐리티가 findByUsername을 사용한다. 비밀번호를 체크하지 않는 이유는 자기가 체크할거니까 직접 하지 말라는 것이다. 내부적으로 비밀번호를 체크한다. 해시로 변경하는게 레파지토리의 책임은 아니지만 만약 다른 메서드에서 오류날 수 있기 때문에 해시로 바꿔야할 때가 있을 수 있다. @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @DataJpaTest public class UserRepositoryTest { // 아무것도 의존하는게 없기 때문에 stub이 필요없음 @Autowired private UserRepository userRepository; // @DataJpaTest가 메모리에 띄워줌 @Test @Order(1) public ..

Spring/Tistory 2022.06.03