diff --git a/Chapter1/src/main/java/com/didispace/Application.java b/Chapter1/src/main/java/com/didispace/Application.java index 031d962..f7a9e16 100644 --- a/Chapter1/src/main/java/com/didispace/Application.java +++ b/Chapter1/src/main/java/com/didispace/Application.java @@ -3,6 +3,13 @@ package com.didispace; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +/** + * + * @author 程序猿DD + * @version 1.0.0 + * @blog http://blog.didispace.com + * + */ @SpringBootApplication public class Application { diff --git a/Chapter1/src/main/java/com/didispace/domain/User.java b/Chapter1/src/main/java/com/didispace/domain/User.java index 43c6551..208cfe3 100644 --- a/Chapter1/src/main/java/com/didispace/domain/User.java +++ b/Chapter1/src/main/java/com/didispace/domain/User.java @@ -1,9 +1,13 @@ package com.didispace.domain; + + /** - * @author didi + * + * @author 程序猿DD * @version 1.0.0 - * @date 16/3/1 下午12:21. + * @blog http://blog.didispace.com + * */ public class User { diff --git a/Chapter1/src/main/java/com/didispace/web/HelloController.java b/Chapter1/src/main/java/com/didispace/web/HelloController.java index 9455485..58c767e 100644 --- a/Chapter1/src/main/java/com/didispace/web/HelloController.java +++ b/Chapter1/src/main/java/com/didispace/web/HelloController.java @@ -3,6 +3,13 @@ package com.didispace.web; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +/** + * + * @author 程序猿DD + * @version 1.0.0 + * @blog http://blog.didispace.com + * + */ @RestController public class HelloController { diff --git a/Chapter1/src/main/java/com/didispace/web/UserController.java b/Chapter1/src/main/java/com/didispace/web/UserController.java index 877d10e..f5c7ee1 100644 --- a/Chapter1/src/main/java/com/didispace/web/UserController.java +++ b/Chapter1/src/main/java/com/didispace/web/UserController.java @@ -1,55 +1,62 @@ package com.didispace.web; import com.didispace.domain.User; -import java.util.List; + +import java.util.*; import org.springframework.web.bind.annotation.*; +/** + * + * @author 程序猿DD + * @version 1.0.0 + * @blog http://blog.didispace.com + * + */ @RestController -@RequestMapping(value="/users") // 通过这里配置使下面的映射都在/users下 +@RequestMapping(value="/users") // 通过这里配置使下面的映射都在/users下,可去除 public class UserController { + static Map users = Collections.synchronizedMap(new HashMap()); + @RequestMapping(value="/", method=RequestMethod.GET) public List getUserList() { // 处理"/users/"的GET请求,用来获取用户列表 // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递 - - - return null; + List r = new ArrayList(users.values()); + return r; } @RequestMapping(value="/", method=RequestMethod.POST) - public User postUser(@ModelAttribute User user) { + public String postUser(@ModelAttribute User user) { // 处理"/users/"的POST请求,用来创建User // 除了@ModelAttribute绑定参数之外,还可以通过@RequestParam从页面中传递参数 - - - return null; + users.put(user.getId(), user); + return "success"; } @RequestMapping(value="/{id}", method=RequestMethod.GET) public User getUser(@PathVariable Long id) { // 处理"/users/{id}"的GET请求,用来获取url中id值的User信息 // url中的id可通过@PathVariable绑定到函数的参数中 - - - return null; + return users.get(id); } @RequestMapping(value="/{id}", method=RequestMethod.PUT) - public User putUser(@PathVariable Long id, @ModelAttribute User user) { + public String putUser(@PathVariable Long id, @ModelAttribute User user) { // 处理"/users/{id}"的PUT请求,用来更新User信息 - - - return null; + User u = users.get(id); + u.setName(user.getName()); + u.setAge(user.getAge()); + users.put(id, u); + return "success"; } @RequestMapping(value="/{id}", method=RequestMethod.DELETE) - public User deleteUser(@PathVariable Long id) { + public String deleteUser(@PathVariable Long id) { // 处理"/users/{id}"的DELETE请求,用来删除User - - - return null; + users.remove(id); + return "success"; } } \ No newline at end of file diff --git a/Chapter1/src/test/java/com/didispace/ApplicationTests.java b/Chapter1/src/test/java/com/didispace/ApplicationTests.java index 5d70be9..1160986 100644 --- a/Chapter1/src/test/java/com/didispace/ApplicationTests.java +++ b/Chapter1/src/test/java/com/didispace/ApplicationTests.java @@ -1,6 +1,8 @@ package com.didispace; +import com.didispace.domain.User; import com.didispace.web.HelloController; +import com.didispace.web.UserController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -10,14 +12,23 @@ import org.springframework.mock.web.MockServletContext; 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.RequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import static org.hamcrest.Matchers.equalTo; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +/** + * + * @author 程序猿DD + * @version 1.0.0 + * @blog http://blog.didispace.com + * + */ @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = MockServletContext.class) @WebAppConfiguration @@ -27,7 +38,9 @@ public class ApplicationTests { @Before public void setUp() throws Exception { - mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build(); + mvc = MockMvcBuilders.standaloneSetup( + new HelloController(), + new UserController()).build(); } @Test @@ -37,4 +50,55 @@ public class ApplicationTests { .andExpect(content().string(equalTo("Hello World"))); } + @Test + public void testUserController() throws Exception { +// 测试UserController + RequestBuilder request = null; + + // 1、get查一下user列表,应该为空 + request = get("/users/"); + mvc.perform(request) + .andExpect(status().isOk()) + .andExpect(content().string(equalTo("[]"))); + + // 2、post提交一个user + request = post("/users/") + .param("id", "1") + .param("name", "测试大师") + .param("age", "20"); + mvc.perform(request) +// .andDo(MockMvcResultHandlers.print()) + .andExpect(content().string(equalTo("success"))); + + // 3、get获取user列表,应该有刚才插入的数据 + request = get("/users/"); + mvc.perform(request) + .andExpect(status().isOk()) + .andExpect(content().string(equalTo("[{\"id\":1,\"name\":\"测试大师\",\"age\":20}]"))); + + // 4、put修改id为1的user + request = put("/users/1") + .param("name", "测试终极大师") + .param("age", "30"); + mvc.perform(request) + .andExpect(content().string(equalTo("success"))); + + // 5、get一个id为1的user + request = get("/users/1"); + mvc.perform(request) + .andExpect(content().string(equalTo("{\"id\":1,\"name\":\"测试终极大师\",\"age\":30}"))); + + // 6、del删除id为1的user + request = delete("/users/1"); + mvc.perform(request) + .andExpect(content().string(equalTo("success"))); + + // 7、get查一下user列表,应该为空 + request = get("/users/"); + mvc.perform(request) + .andExpect(status().isOk()) + .andExpect(content().string(equalTo("[]"))); + + } + }