티스토리 뷰
...
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
...
@ExtendWith(SpringExtension.class)
public class TestTest {
@Mock
EntityRepository entityRepository;
@AutoSource
@ParameterizedTest
public void create_test(Req req, Entity entity, String createUser) throws Exception {
Req spyReq = spy(req);
when(spyReq.toEntity(createUser)).thenReturn(entity);
given(entityRepository.save(entity)).willReturn(entity);
assertThrows(InvalidExtException.class, () -> entityService.create(spyReq, createUser));
}
}
지금 보니 위의 코드는 뭔가 좀 이상한 코드네... Mocking 하는데 SpringExtension을 사용 할 필요는 없다.(과거의 나...ㅠㅠ)
대신 이렇게 사용하면 될것 같다.
@ExtendWith(MockitoExtension.class)
public class TestTest {
// ExtendWith에 MockitoExtension을 넣고 이렇게 어노테이션을 사용 하면
// Mock 객체가 주입이 됨.
@Mock
EntityRepository entityRepository;
@AutoSource
@ParameterizedTest
public void create_test(Req req, Entity entity, String createUser) throws Exception {
// 아니면 이런 식으로 static method를 import 해서 사용해도 됨.
Req spyReq = spy(req);
when(spyReq.toEntity(createUser)).thenReturn(entity);
given(entityRepository.save(entity)).willReturn(entity);
assertThrows(InvalidExtException.class, () -> entityService.create(spyReq, createUser));
}
}
정리 하자면
MockitoExtension
을 사용하여@Mock
,@Spy
등을 써서 의존성 주입mock()
,spy()
같은 static method를 import 해서 사용
'spring boot > snippets' 카테고리의 다른 글
mocking 하는 방법 (0) | 2021.12.22 |
---|---|
jpa에서 json column 사용하기 (0) | 2021.12.22 |
entity에 enum list 정의하기 (0) | 2021.12.22 |
jpa repository만 테스트 (0) | 2021.12.22 |
jpa entity에서 column 정의 (0) | 2021.12.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday