0
우선 : 나는 Spring에 대해 약간 새로운 편이다.Mockito로 봄 MVC 테스트하기
@RestController
public class GreetingsController {
@Autowired
private SomeService svc;
@RequestMapping("/greeting")
public String greeting() {
System.out.println(svc.sayHello());
return svc.sayHello();
}
}
과 "서비스 ': 메인 응용 프로그램 :
@SpringBootApplication
public class App
{
public static void main(String[] args)
{
SpringApplication.run(App.class, args);
}
}
컨트롤러
@Service
public class SomeService {
public String sayHello() {
return "Hello from the real thing";
}
}
I
나는 3 파일을 매우 간단한 봄 부팅 응용 프로그램이 이제는 (통합 테스트) 서비스를 작성하고 싶습니다. (실제 응용 프로그램에서는 DB를 사용할 것입니다.) nection)이 조롱 당한다. 실제 서비스 내 모의 서비스를 테스트하는 동안이 아니라 사용하고 있기 때문에@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = App.class)
@WebAppConfiguration
public class AppTest
{
private MockMvc mockMvc;
@Mock
private SomeService svcMock;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setup() throws Exception {
MockitoAnnotations.initMocks(this);
Mockito.when(svcMock.sayHello()).thenReturn("Hello from Mock");
this.mockMvc = webAppContextSetup(webApplicationContext).build();
}
@Test
public void run() throws Exception {
MvcResult res = mockMvc.perform(get("/greeting"))
.andExpect(status().isOk())
.andReturn();
assertEquals("Hello from Mock", res.getResponse().getContentAsString());
}
}
불행하게도이 테스트가 실패 : 내가 가지고있는 것은 이것이다. 내가 도대체 뭘 잘못하고있는 겁니까? 테스트 중에 Mock 서비스를 사용하도록 프레임 워크에 어떻게 알릴 수 있습니까?
감사 및 인사
Spring을 사용하지 않는 테스트는 가능할 때마다 수행하는 것이 일반적으로 좋은 방법입니다. bean을 모방 할 필요가 있다면 Spring Boot 1.4 (https://spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-)에서 나오는'@ MockBean' 주석에 관심이있을 것이다. 1-4) –
@ Philweb, 고마워. Spring Boot로 작업을 사랑하십시오. 우리는 JBOSS에서 Pivotal Cloud Foundry에 이르기까지 모든 것을 마이그레이션하고 있습니다. 지난 6 년 동안 Spring 애플리케이션을 보유했지만 JBOSS에 항상 적용해야했습니다. 다른 한 달 만에 더 이상 없습니다. – duffymo