1. spring mvc controller implementation
@Controller public class Alarm { @Resource(name = "db.service", shareable = true) private IDatabaseService dbService; @RequestMapping(value = "/query_alarmlogs", produces = "application/json;charset=UTF-8") public @ResponseBody AlarmLogList queryAlarmLogs(@RequestParam("queryType") String queryType, @RequestParam("lastId") String lastId) { AlarmQueryType alarmType = AlarmQueryType.fromValue(queryType); AlarmLogList list = findAlarmLogs(alarmType.getAlarmDate(), Integer.valueOf(lastId)); return list; } private AlarmLogList findAlarmLogs(Date date, int lastId) { List<AlarmLogs> alarmList = dbService.findAlarmLogs(date, lastId); AlarmLogList alarms = new AlarmLogList(alarmList); return alarms; } private final class AlarmLogList extends ArrayList<AlarmLogs> { private static final long serialVersionUID = 1L; public AlarmLogList(List<AlarmLogs> list) { super(list); } } public void setDbService(IDatabaseService dbService) { this.dbService = dbService; } }
2. test it.
package com.eifesun.mornitor.web; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.nio.charset.Charset; import java.util.Arrays; import java.util.Date; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; import com.eifesun.monitor.DeviceType; import com.eifesun.monitor.service.IDatabaseService; import com.eifesun.monitor.service.MongoDBServiceImpl; import com.eifesun.monitor.web.Alarm; import com.eifesun.monitor.web.command.AlarmQueryType; import com.eifesun.monitor.web.model.AlarmLogs; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/spring/mvc-core-config.xml", "/spring/business-config.xml"}) @WebAppConfiguration public class AlarmControllerTest { private MockMvc mockMvc; @Autowired public RequestMappingHandlerAdapter handlerAdapter; @Mock private IDatabaseService mockDbService; @Autowired private Alarm alarm; @Before public void init() { mockDbService = Mockito.mock(MongoDBServiceImpl.class); alarm.setDbService(mockDbService); this.mockMvc = MockMvcBuilders.standaloneSetup(alarm).build(); } @Test public void testQueryAlarmLogs() throws Exception { AlarmLogs log1 = new AlarmLogs(DeviceType.INVERTER, "inverter1", "panel 1 over volage"); AlarmLogs log2 = new AlarmLogs(DeviceType.INVERTER, "inverter1", "panel 2 over volage"); int lastId = 0; String queryType = "alarm_auto"; Date date = AlarmQueryType.fromValue(queryType).getAlarmDate(); Mockito.when(mockDbService.findAlarmLogs(date, lastId)).thenReturn(Arrays.asList(log1, log2)); //@formatter:off mockMvc.perform(get("/query_alarmlogs?queryType=alarm_auto&lastId=0")) .andExpect(status().isOk()) .andExpect(content().contentType(APPLICATION_JSON_UTF8)) .andExpect(jsonPath("$", hasSize(2))) .andExpect(jsonPath("$[0].clientId", equalTo("inverter1"))) .andExpect(jsonPath("$[0].deviceType", equalTo("INVERTER"))) .andExpect(jsonPath("$[0].description", equalTo("panel 1 over volage"))) .andExpect(jsonPath("$[1].clientId", equalTo("inverter1"))) .andExpect(jsonPath("$[1].deviceType", equalTo("INVERTER"))) .andExpect(jsonPath("$[1].description", equalTo("panel 2 over volage"))); //@formatter:on verify(mockDbService, times(1)).findAlarmLogs(date, lastId); verifyNoMoreInteractions(mockDbService); } public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8")); }
相关推荐
Spring Mvc AOP通过注解方式拦截controller等实现日志管理
1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 5.Spring MVC @ModelAttribute 注解案例 6.Spring MVC 国际化案例 7....
Spring注解 @Component、@Repository、@Service、@Controller区别,有兴趣的可能看一下。
Spring注解@Component、@Repository、@Service、@Controller区别.doc
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
基于注解的spring mvc,dao 层注解:@Repository("userDao"), entity层注解:@Entity,service层注解:@Service("userService"), action层注解:@Controller("userController") @RequestMapping("/user.do")
Spring MVC之Controller层的常用注解
Spring MVC test project.
spring mvc controller间跳转 重定向 传参
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
本文详细介绍spring MVC的原理和开发心得体会。
精通Spring MVC 4 中文
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
9 import org.springframework.web.servlet.mvc.Controller; 10 import org.springframework.web.servlet.ModelAndView; 11 12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet....
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包
Spring MVC 之@ModelAttribute使用.rar
《Spring MVC+MyBatis开发从入门到项目实战》分为4篇。第1篇是Java开发环境的搭建,包括JDK的下载与安装、环境变量的配置、MyEclipse的下载与基本配置。第2篇是MyBatis技术入门,包括剖析JDBC的弊端、MyBatis的背景...