@Test
void μ€λ³΅_νμ_μμΈ() throws Exception {
//Given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
//When
memberService.join(member1);
IllegalStateException e = assertThrows(IllegalStateException.class,
() -> memberService.join(member2));//μμΈκ° λ°μν΄μΌ νλ€.
assertThat(e.getMessage()).isEqualTo("μ΄λ―Έ μ‘΄μ¬νλ νμμ
λλ€.");
}
new Member(); λ₯Ό λ λ² ν΄μ setNameμ κ°κ° νλ μ΄μ λ?
new Member();λ₯Ό λ λ² ν μ΄μ λ?
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
μ΄λ κ² λ κ°μ Member κ°μ²΄λ₯Ό μμ±ν μ΄μ λ μ΄λ¦(name)μ΄ κ°μ λ€λ₯Έ κ°μ²΄ λ κ°λ₯Ό λ§λ κ²μ΄μμ.
→ μ¦, λμΌν μ΄λ¦μ κ°μ§ λ€λ₯Έ μ¬μ©μ λ±λ‘μ μλνλ €λ ν
μ€νΈμ
λλ€.
member1κ³Ό member2λ λ©λͺ¨λ¦¬ μμμ μλ‘ λ€λ₯Έ μΈμ€ν΄μ€μ§λ§, μ΄λ¦ "spring"μ κ°κΈ° λλ¬Έμ, μλΉμ€ λ‘μ§μμ μ€λ³΅ νμμΌλ‘ νλ¨νκ³ μμΈλ₯Ό λ°μμμΌμΌ ν©λλ€.
setName()μ νλ©΄ DBμ μ μ₯λλ 건κ°μ?
μλμ! setName()μ λ¨μν κ°μ²΄μ νλ κ°μ μ€μ νλ λ©μλμΌ λΏμ΄κ³ , DBμλ μ ν κ΄λ ¨μ΄ μμ΅λλ€.
μ€μ λ‘ DBμ μ μ₯λλ μμ μ μ΄ λΌμΈμ λλ€:
memberService.join(member1);
μ¦, join() λ©μλκ° λ΄λΆμ μΌλ‘ MemberRepository.save(member) κ°μ κ±Έ νΈμΆν΄μ μμν(persist)λ₯Ό μλνκ³ , κ·Έ κ³Όμ μμ DBμ μ μ₯λ©λλ€.
DBλ μ΄λ μλ κ±°μμ?
μ΄ ν μ€νΈ μ½λ μ체μμλ DBμ μ’ λ₯κ° λͺ ννμ§ μμ§λ§, λ³΄ν΅ ν μ€νΈμμλ μΈλ©λͺ¨λ¦¬ DB(H2 λ±) λ₯Ό μ¬μ©νκ±°λ, κ°μ§ μ μ₯μ(Mock, Memory Repository) λ₯Ό μλλ€.
μμ:
- μ€μ νκ²½: MySQL, PostgreSQL, Oracle, etc.
- ν μ€νΈ νκ²½: H2, MemoryMemberRepository λ±
// μ: ν
μ€νΈμ© λ©λͺ¨λ¦¬ μ μ₯μ
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HashMap<>();
//...
}
π§ μμ½νλ©΄
- new Member(); λ λ² ν 건 λ€λ₯Έ μΈμ€ν΄μ€μ§λ§ κ°μ μ΄λ¦μ κ°μ§κ² νκΈ° μν¨
- setName()μ DB μ μ₯μ΄ μλ κ°μ²΄μ name νλ μ€μ
- μ€μ DB μ μ₯μ memberService.join() κ°μ λ©μλλ₯Ό ν΅ν΄ λ°μ
- DBλ ν μ€νΈ μν©μ λ°λΌ λ©λͺ¨λ¦¬ DB(H2) λλ Fake Repository μΌ μ μμ
'π₯οΈ μΉ(Web) > μ€νλ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| 컨νΈλ‘€λ¬λ @BeanμΌλ‘ λ±λ‘νλ©΄ μλλμ? (0) | 2025.04.20 |
|---|---|
| Repository μΈν°νμ΄μ€ (0) | 2025.04.19 |
| μ€νλ§ Controller μ½λμμ Modelμ μΆμ²μ μν (0) | 2025.04.18 |
| DTO, Entity, Mapper (0) | 2025.04.18 |
| μ€νλ§ λ μ΄μ΄ ꡬ쑰 (0) | 2025.04.18 |