这是一个建议,应该给你一些想法。我假设你熟悉
SpringJUnit4ClassRunner和
@ContextConfiguration。首先创建一个包含
PcUserController和的测试应用程序上下文
PcUserService。在
PcUserControllerTest下面的示例类中,Jackson用于转换JSON消息,Mockito用于模拟。
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration()public class PcUserControllerTest { MockHttpServletRequest requestMock; MockHttpServletResponse responseMock; AnnotationMethodHandlerAdapter handlerAdapter; ObjectMapper mapper; PcUser pcUser; @Autowired PcUserController pcUserController; @Autowired PcUserService pcUserServiceMock; @Before public void setUp() { requestMock = new MockHttpServletRequest(); requestMock.setContentType(MediaType.APPLICATION_JSON_VALUE); requestMock.addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE); responseMock = new MockHttpServletResponse(); handlerAdapter = new AnnotationMethodHandlerAdapter(); HttpMessageConverter[] messageConverters = {new MappingJacksonHttpMessageConverter()}; handlerAdapter.setMessageConverters(messageConverters); mapper = new ObjectMapper(); pcUser = new PcUser(...); reset(pcUserServiceMock); }}
现在,我们拥有创建测试所需的所有代码:
@Testpublic void shouldGetUser() throws Exception { requestMock.setMethod("GET"); requestMock.setRequestURI("/pcusers/1"); when(pcUserServiceMock.read(1)).thenReturn(pcUser); handlerAdapter.handle(requestMock, responseMock, pcUserController); assertThat(responseMock.getStatus(), is(HttpStatus.SC_OK)); PcUser actualPcUser = mapper.readValue(responseMock.getContentAsString(), PcUser.class); assertThat(actualPcUser, is(pcUser));}@Testpublic void shouldCreateUser() throws Exception { requestMock.setMethod("POST"); requestMock.setRequestURI("/pcusers/create/1"); String jsonPcUser = mapper.writevalueAsString(pcUser); requestMock.setContent(jsonPcUser.getBytes()); handlerAdapter.handle(requestMock, responseMock, pcUserController); verify(pcUserServiceMock).create(pcUser);}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)