상세 컨텐츠

λ³Έλ¬Έ 제λͺ©

[ν…ŒμŠ€νŠΈ] λ‹¨μœ„ν…ŒμŠ€νŠΈ vs ν†΅ν•©ν…ŒμŠ€νŠΈ vs μΈμˆ˜ν…ŒμŠ€νŠΈ

😎 지식 in Action/Git, Jira πŸ› οΈ

by :ν•΄ν”Όλž˜λΉ—πŸΎ 2024. 12. 11. 10:28

λ³Έλ¬Έ

λ‹¨μœ„ ν…ŒμŠ€νŠΈ

μ†Œν”„νŠΈμ›¨μ–΄μ˜ κ°€μž₯ μž‘μ€ λ‹¨μœ„μΈ κ°œλ³„ λ©”μ„œλ“œλ‚˜ ν•¨μˆ˜μ˜ κΈ°λŠ₯을 κ²€μ¦ν•˜λŠ” ν…ŒμŠ€νŠΈ

νŠΉμ • κΈ°λŠ₯이 μ˜¬λ°”λ₯΄κ²Œ λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•¨

 

  @Test
  void μ„±μˆ˜κΈ°_주말_가격_계산() {
      // given
      LocalDate peakSeasonWeekend = LocalDate.of(2024, 8, 10); // 8μ›” ν† μš”μΌ

      // when
      int price = PriceCalculator.calculate("A-1", peakSeasonWeekend);

      // then
      assertThat(price).isEqualTo(136000); // 80000 * 1.7
  }

- μ™ΈλΆ€ μ˜μ‘΄μ„± μ—†μŒ 

ν†΅ν•©ν…ŒμŠ€νŠΈ

κ°œλ³„ λͺ¨λ“ˆλ“€μ΄ κ²°ν•©λ˜μ–΄ 전체 μ‹œμŠ€ν…œμ΄ μ˜¬λ°”λ₯΄κ²Œ λ™μž‘ν•˜λŠ”μ§€ κ²€μ¦ν•˜λŠ” ν…ŒμŠ€νŠΈ

λͺ¨λ“ˆ κ°„μ˜ μƒν˜Έμž‘μš©μ΄ μ˜¬λ°”λ₯΄κ²Œ λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•œ ν…ŒμŠ€νŠΈ

  // Service + Repository 연동 검증
  @SpringBootTest
  @Transactional
  class ReservationServiceIntegrationTest {

      @Test
      void μ˜ˆμ•½_μ €μž₯_ν›„_쑰회() {
          // given
          ReservationRequest request = new ReservationRequest(...);

          // when
          ReservationResponse saved = reservationService.createReservation(request);
          ReservationResponse found = reservationService.getReservation(saved.getId());

          // then
          assertThat(found.getCustomerName()).isEqualTo("홍길동");
      }
  }

- μ‹€μ œ DB μ‚¬μš©

- νŠΈλžœμž­μ…˜ λ‘€λ°± 

- λͺ¨λ“ˆκ°„ 연동 확인 

- μ„±λŠ₯ ν…ŒμŠ€νŠΈ 

μΈμˆ˜ν…ŒμŠ€νŠΈ

ν”„λ‘œμ νŠΈμ— μ°Έμ—¬ν•˜λŠ” μ‚¬λžŒλ“€(기획자, ν΄λΌμ΄μ–ΈνŠΈ λŒ€ν‘œ, 개발자)이 ν† μ˜ν•΄μ„œ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό λ§Œλ“€κ³ ,

κ°œλ°œμžλŠ” 이에 μ˜κ±°ν•˜μ—¬ μ½”λ“œλ₯Ό μž‘μ„±ν•¨

μ‚¬μš©μž κ΄€μ μ˜ ν…ŒμŠ€νŠΈλ‘œ E2E ν˜•μ‹μ„ μ΄μš©ν•˜μ—¬ 확인함

μ†Œν”„νŠΈμ›¨μ–΄ λ‚΄λΆ€ κ΅¬μ‘°λ‚˜ κ΅¬ν˜„ 방법을 κ³ λ €ν•˜κΈ°λ³΄λ‹€λŠ” μ‹€μ œ μ‚¬μš©μž κ΄€μ μ—μ„œ ν…ŒμŠ€νŠΈν•¨ >> λΈ”λž™λ°•μŠ€ ν…ŒμŠ€νŠΈ 

  // μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€ 전체 흐름 검증 (API 레벨)
  @Test
  @DisplayName("[μ˜ˆμ™Έ] 동일 κΈ°κ°„ 동일 μ‚¬μ΄νŠΈ 쀑볡 μ˜ˆμ•½ κ±°λΆ€")
  void 쀑볡_μ˜ˆμ•½_μ‹œλ„μ‹œ_μ˜ˆμ™Έ_λ°œμƒ() {
      // given - "A-1" μ‚¬μ΄νŠΈμ— "홍길동"의 μ˜ˆμ•½μ΄ μžˆλ‹€
      μ˜ˆμ•½_생성_μš”μ²­("A-1", "2024-08-15", "2024-08-17", "홍길동", 4);

      // when - "κΉ€μ² μˆ˜"κ°€ 같은 기간에 μ˜ˆμ•½ μ‹œλ„ν•œλ‹€
      ExtractableResponse<Response> response = μ˜ˆμ•½_생성_μš”μ²­(
          "A-1", "2024-08-15", "2024-08-17", "κΉ€μ² μˆ˜", 4
      );

      // then - μ˜ˆμ•½μ΄ κ±°λΆ€λœλ‹€
      assertThat(response.statusCode()).isEqualTo(HttpStatus.CONFLICT.value());
      assertThat(response.jsonPath().getString("message"))
          .isEqualTo("ν•΄λ‹Ή 기간에 이미 μ˜ˆμ•½μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€");
  }

- HTTP μš”μ²­/응닡 

- 큰 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 

728x90

κ΄€λ ¨κΈ€ 더보기