티스토리 뷰
반응형
Mock 이란 ?
- 단위 테스트를 진행할때 실제 객체를 만들어서 사용하게 되면 의존성이 높아져 간단한 구현이 아닌 복잡한 구현을 하게 되었을 때 어려움이 있음
- 이를 해결하기 위해 가짜 객체인 Mock을 사용해서 의존성을 끊고, 보다 간편하게 단위 테스트를 진행 할 수 있다.
Mockito 란?
- JAVA에서 Mock을 사용할 수 있도록 지원해주는 프레임워크
선언 방법
- Mock을 사용하지 않고 Repository를 모두 가져와서 사용하는 경우
public class RestaurantServiceTest {
private RestaurantRepository restaurantRepository;
private RestaurantService restaurantService;
private MenuItemRepository menuItemRepository;
@Before
public void setUp(){
restaurantRepository = new RestaurantRepositoryImpl();
restaurantService = new RestaurantService(restaurantRepository);
menuItemRepository = new MenuItemRepositoryImpl();
restaurantService = new RestaurantService(restaurantRepository, menuItemRepository); }
- Mock을 사용해서 가짜 객체를 만든 경우
import static org.mockito.BDDMockito.given;
public class RestaurantServiceTest {
private RestaurantService restaurantService;
// 첫번째 Mock
@Mock
private RestaurantRepository restaurantRepository;
// 두번째 Mock
@Mock
private MenuItemRepository menuItemRepository;
@Before
public void setUp() {
// Mock 연동 및 초기화
MockitoAnnotations.initMocks(this);
mockRestaurantRepository();
mockMenuItemRepository();
restaurantService = new RestaurantService(restaurantRepository, menuItemRepository); }
Mock 생성 방법
- 첫번째 Mock ( RestaurantRepository )
private void mockRestaurantRepository() {
// Mock 으로 생성한 가짜 객체에, 값을 대입
List<Restaurant> restaurants = new ArrayList<>();
Restaurant restaurant = new Restaurant(1004L, "Bob zip", "Seoul");
restaurants.add(restaurant);
given(restaurantRepository.findAll()).willReturn(restaurants);
given(restaurantRepository.findById(1004L)).willReturn(restaurant);
}
- 두번째 Mock ( MenuItemRepository )
private void mockMenuItemRepository() {
// Mock 으로 생성한 가짜 객체에, 값을 대입
List<MenuItem> menuItems = new ArrayList<>();
menuItems.add(new MenuItem("Kimchi"));
given(menuItemRepository.findAllByRestaurantId(1004L)).willReturn(menuItems);
}
반응형
'JAVA, Kotlin' 카테고리의 다른 글
@Resource, @Autowired, @Inject 차이 (0) | 2021.11.01 |
---|---|
람다 Lambda 란? (0) | 2021.06.23 |
컴파일러 vs 인터프리터 (0) | 2021.03.04 |
== 와 equals 차이? (0) | 2021.03.03 |
JPA 네이티브 쿼리 - param이 많을 때, 복합키일때 (0) | 2020.11.16 |
댓글