μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- μΈνλ μ΄μ μμ μ΄μλ¨κΈ°
- λ¬λΉν΄λ½ 1κΈ°
- μ¬κ·
- μλ°
- λ¬λΉν΄λ½1κΈ°
- λ¬λΉμΊ νΌμ€
- λ Έλ§λμ½λ κ°μ
- React
- ReactJSλ‘ μν μΉ μλΉμ€ λ§λ€κΈ°
- React.js
- λ°±μ€
- λ Έλ§λμ½λ
- Algorithm
- HashMap
- μΉ΄μΉ΄μ€λΈλΌμΈλμ½λ©ν μ€νΈ
- Array
- programmers
- νλ‘κ·Έλλ¨Έμ€
- 리μ‘νΈ
- SoftwareExpertAcademy
- μκ³ λ¦¬μ¦
- Stack
- BOJ
- SWEA
- λ¬λΉν΄λ½
- dfs
- κ²½μ 곡λΆ
- JPA
- Java
- μμ νμ
- Today
- Total
th42500μ TIL
Given-When-Then ν¨ν΄κ³Ό given()&when() λ³Έλ¬Έ
π Given-When-Then ν¨ν΄μ΄λ?
ν μ€νΈ μ½λλ₯Ό νννλ λ°©μ μ€ νλλ‘, TDD(Test-Driven Development; ν μ€νΈ μ£Όλ κ°λ°)μμ νμλ BDD(Behavior-Driven-Development; νμ μ£Όλ κ°λ°)λ₯Ό ν΅ν΄ νμν ν μ€νΈ μ κ·Ό λ°©μ
1οΈβ£ Given
ν μ€νΈ μν μ ν μ€νΈμ νμν νκ²½ μ€μ μ νλ λ¨κ³λ‘, ν μ€νΈμ νμν λ³μ μ μ λλ Mockκ°μ²΄λ₯Ό νμ©ν νΉμ μν©μ λν νλ μ μλ₯Ό νλ λ¨κ³
2οΈβ£ When
ν μ€νΈμ λͺ©μ μ 보μ¬μ£Όλ λ¨κ³λ‘, μ€μ ν μ€νΈ μ½λλ₯Ό ν¬ν¨νμ¬ ν μ€νΈλ₯Ό ν΅ν κ²°κ΄κ°μ κ°μ Έμ€λ λ¨κ³
3οΈβ£ Then
ν μ€νΈ κ²°κ³Όλ₯Ό κ²μ¦νλ λ¨κ³λ‘, When λ¨κ³ λλ ν μ€νΈλ₯Ό ν΅ν΄ λμ¨ κ²°κ³Ό μ€ κ²μ¦μ΄ νμν λΆλΆμ λν΄ κ²μ¦
π given()κ³Ό when() λ©μλ
given()
Mokitoμμ μ 곡νλ given() λ©μλλ₯Ό ν΅ν΄ μ΄λ€ κ°μ²΄μμ, μ΄λ€ λ©μλκ° νΈμΆλκ³ μ΄λ€ νλΌλ―Έν°λ₯Ό μ£Όμ λ°λμ§ κ°μ ν ν willReturn() λλ willThrow() λ±μ μ΄μ©νμ¬ κ²°κ³Όλ₯Ό 미리 μ μν΄λκΈ° μν΄ μ¬μ©
@WebMvcTest
class UserRestControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@MockBean
UserService userService;
@Test
@DisplayName("getUser ν
μ€νΈ")
void getUserTest() throws Exception {
given(userService.getUser(1L)).willReturn(new UserResponseDto(1L, "user", "μ μ μ°ΎκΈ° μ±κ³΅"));
Long userId = 1L;
mockMvc.perform(get(String.format("/api/v1/users/%d", userId)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").exists())
.andExpect(jsonPath("$.username").value("user"))
.andExpect(jsonPath("$.message").value("μ μ μ°ΎκΈ° μ±κ³΅"))
.andDo(print());
verify(userService).getUser(1L);
}
}
when()
ν μ€νΈμ μ¬μ©λ μν°ν° κ°μ²΄λ₯Ό μμ±ν ν, when() λ©μλλ₯Ό ν΅ν΄ μ΄λ€ λ©μλκ° νΈμΆλκ³ μ΄λ€ νλΌλ―Έν°λ₯Ό μ£Όμ λ°λμ§ κ°μ ν ν thenReturn() λ©μλλ₯Ό μ΄μ©νμ¬ λμμ λν κ²°κ΄κ° 리ν΄μ μ€μ νκΈ° μν΄ μ¬μ©
@WebMvcTest
class UserRestControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@MockBean
UserService userService;
@Test
@DisplayName("getUser ν
μ€νΈ")
void getUserTest() throws Exception {
when(userService.getUser(1L)).thenReturn(new UserResponseDto(1L, "user", "μ μ μ°ΎκΈ° μ±κ³΅"));
Long userId = 1L;
mockMvc.perform(get(String.format("/api/v1/users/%d", userId)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").exists())
.andExpect(jsonPath("$.username").value("Soyeong"))
.andExpect(jsonPath("$.message").value("μ μ μ°ΎκΈ° μ±κ³΅"))
.andDo(print());
verify(userService).getUser(1L);
}
}
β Given-given(), When-when() λμΌν μν μΌκΉ?
λ΅μ β μ΄λ€.
μμ μ€λͺ ν λ°μ κ°μ΄ given() κ³Ό when() λͺ¨λ Given-When-Then μ€ Givenμ μν μ λ΄λΉνλ λ©μλλ‘, μ΄λ ν λ©μλκ° νΈμΆλκ³ μ΄λ€ νλΌλ―Έν°λ₯Ό μ£Όμ λ°λμ§ κ°μ ν ν μ΄μ λν κ²°κ΄κ°μ 미리 μ μνκΈ° μν΄ μ¬μ©νλ€.
λ€λ§, given()μ κ²½μ° willReturn(), willThrow() λ±μ λ©μλλ‘ κ²°κ΄κ°μ μ μν μ μκ³ when()μ κ²½μ° thenReturn(), thenThrow() λ±μ λ©μλλ‘ κ²°κ΄κ°μ μ μν μ μλ€λ μ°¨μ΄μ μ΄ μλ€.
'Backend > JUnit & BDD' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
MockTest μ null κ°μ΄ λ¨λ μ΄μ (0) | 2023.01.26 |
---|---|
[JUnit] @Nestedλ? (0) | 2023.01.04 |
[Test] MockTest μ€ λ°μν 401 (Unauthorized) μλ¬ (0) | 2023.01.01 |