1
mockito 메소드에 문제가있는 경우 : (...). 내가 테스트 할 때 :Mockito의 메소드가 올바르게 작동하지 않을 때
afterThrowExceptionShouldReturnCorrectHttpStatus()를
는 두 번째 테스트, 첫번째 란 :
controllerShouldReturnListOfAnns()
이 NotFoundException을 던져 때문에 항상 실패합니다. 첫 번째 테스트를 삭제하거나 두 번째 테스트를 먼저 실행하면 모든 것이 정확합니다. 이 방법은 첫 번째 테스트 오버라이드 메소드에서 when()이 두 번째 테스트를 작성할 때와 비슷합니다. 테스트 코드 및 테스트 구성이 있습니다.
@ActiveProfiles("dev")
@RunWith(SpringRunner.class)
@SpringBootTest
public class AnnTestController {
@Autowired
private AnnounService annSrv;
@Autowired
private AnnounRepo annRepo;
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void contextLoads() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
public void afterThrowExceptionShouldReturnCorrectHttpStatus() throws Exception {
when(this.annRepo.getAnnounList()).thenThrow(NotFoundAnnounException.class);
this.mockMvc.perform(get("/ann/list")).andExpect(status().isNotFound());
}
@Test
public void controllerShouldReturnListOfAnns() throws Exception {
List<Announcement> lst = new ArrayList<>();
lst.add(new Announcement(1, "test", "test"));
when(annRepo.getAnnounList()).thenReturn(lst);
this.mockMvc.perform(get("/ann/list"))
.andExpect(status().isOk())
.andExpect(jsonPath("$[0].id", is(1)));
}}
구성 :
이@Profile("dev")
@Configuration
public class BeanConfig {
@Bean
public CommentsRepo commentsRepo() {
return mock(CommentsRepo.class);
}}
! 고맙습니다! btw. 왜이 문제가 발생합니까? 항상이 방법을 추가하는 것이 정상입니까 (@After)? – destro1
스프링 테스트의 수명주기는 스프링 러너에 의해 제어됩니다. Spring 러너는 Mockito 라이프 사이클을 돌보지 않습니다. 그래서 직접 관리해야합니다. – fiddels