@Service
public class SomeService {
private final SomeRepository someRepository;
@Autowired
public SomeService(SomeRepository someRepository) {
this.someRepository = someRepository;
}
public String doSomething() {
// Some business logic
return someRepository.getData();
}
}
@Repository
public interface SomeRepository {
String getData();
}
이 코드에서 SoneService 는 SomeRepository에 의존하고 있다.
@RunWith(MockitoJUnitRunner.class)
public class SomeServiceTest {
@Autowired
private SomeService someService; // @Autowired로 스프링에서 SomeService 빈을 주입받음
@Mock
private SomeRepository someRepository; // @Mock으로 Mockito에서 SomeRepository의 목(Mock) 객체 생성
@Test
public void testDoSomething() {
// Given
given(someRepository.getData()).willReturn("MockedData");
// When
String result = someService.doSomething();
// Then
assertThat(result).isEqualTo("MockedData");
}
}
이 테스트 코드에서 SomeService 빈을 @Autowired로 주입받고 SoneRepository의 목 객체는 @Mock으로 생성한다.
given() 과 willReturn() 메서드를 사용하여 목 객체의 행동을 정의하고, 그 후 SomeService의 doSomething() 메서드를 호출하여 테스트를 수행한다.
이렇게 함으로써 뢰부 의존성인 SomeRepository의 행동을 모의(Mock) 하여 SomeService의 테스트를 진행할 수 있다.
인텔리제이 톰캣 한글깨짐 해결방법 (0) | 2024.03.09 |
---|---|
테스트코드 작성(기초) (0) | 2024.01.24 |
Schedul (0) | 2023.12.23 |
parameter 전송 및 받아오기 (0) | 2023.12.15 |
깃허브 pull 후 내 코드와 병합하는 과정 (0) | 2023.12.12 |