[ SourceCode 참고]

https://github.com/jjangsky/Testing-study

Untitled

Persistence Layer는 Data Access 여부를 확인하는 것이라 단위 테스트에 가깝지만, Business Layer는 Persistence Layer에서 데이터를 조회한 것 기반으로 테스트가 진행되어 두 개의 계층을 보는 통합 테스트 이다.

요구 사항

Entity 설정

Untitled

OrderProduct Entity 생성

Order EntityProduct Entity 는 ManyToMany 관계에서 중간에 관계를 해소할 수 있는 Mapping Entity가 필요하다.

/* OrderProdcut Entity */
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class OrderProduct extends BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

		// 지연 로딩 사용하여 필요할 때만 사용
    @ManyToOne(fetch = FetchType.LAZY) 
    private Order order;

    @ManyToOne(fetch = FetchType.LAZY)
    private Product product;

    public OrderProduct(Order order, Product product) {
        this.order = order;
        this.product = product;
    }
}

→ 연관 관계 설정할 때 FetchType.LAZY 로 설정하여 필요할 때 불러올 수 있도록 한다.