{"id":1453,"date":"2021-10-20T11:27:25","date_gmt":"2021-10-20T03:27:25","guid":{"rendered":"https:\/\/www.zeroheart.xyz\/wordpress\/?p=1453"},"modified":"2021-10-20T11:27:25","modified_gmt":"2021-10-20T03:27:25","slug":"%e6%8e%a7%e5%88%b6%e5%b1%82%e6%b5%8b%e8%af%95%e7%94%a8%e4%be%8b","status":"publish","type":"post","link":"https:\/\/www.zeroheart.xyz\/wordpress\/?p=1453","title":{"rendered":"\u63a7\u5236\u5c42\u6d4b\u8bd5\u7528\u4f8b"},"content":{"rendered":"\n<p>1.\u5b9a\u4e00\u4e2a\u57fa\u7c7b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@RunWith(SpringRunner.class)\n@SpringBootTest(classes = SpringbootBssPMApplication.class)\n@AutoConfigureMockMvc\n@Slf4j\npublic class BaseControllerTest {\n    MockMvc mockMvc;\n\n    @Before\n    public void init() {\n        log.info(\"\u5f00\u59cb\u6d4b\u8bd5...\");\n    }\n\n    @After\n    public void after() {\n        log.info(\"\u6d4b\u8bd5\u7ed3\u675f...\");\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>2.filter\u5904\u7406\u4e2d\u6587\u5b57\u7b26<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Utf8Filter extends OncePerRequestFilter {\n    @Override\n    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)\n            throws ServletException, IOException {\n        response.setCharacterEncoding(StandardCharsets.UTF_8.toString());\n        filterChain.doFilter(request, response);\n    }\n}<\/code><\/pre>\n\n\n\n<p>3.\u5177\u4f53\u6d4b\u8bd5\u7c7b<\/p>\n\n\n\n<p>3.1\u6ce8\u5165controller\uff0c\u521d\u59cb\u5316mockMvc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Autowired\nUserController userController;\n\n@Before\npublic void setup(){\n        mockMvc = MockMvcBuilders.standaloneSetup(userController)\n                .addFilter(new Utf8Filter())\n                .build();\n    }<\/code><\/pre>\n\n\n\n<p>3.2\u5199\u5177\u4f53\u7684\u6d4b\u8bd5\u65b9\u6cd5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Test\npublic void get() throws Exception {\n        String url = \"\/baf\/user\/{id}\";\n\n        mockMvc.perform(MockMvcRequestBuilders.get(url, 1)\n                .accept(MediaType.APPLICATION_JSON))\n                .andExpect(MockMvcResultMatchers.status().isOk())\n                .andDo(MockMvcResultHandlers.print())\n                .andReturn();\n}<\/code><\/pre>\n\n\n\n<p>3.3\u5b8c\u6574\u6d4b\u8bd5\u7c7b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class UserControllerTest extends BaseControllerTest{\n    @Autowired\n    UserController userController;\n\n    @Before\n    public void setup(){\n        mockMvc = MockMvcBuilders.standaloneSetup(userController)\n                .addFilter(new Utf8Filter())\n                .build();\n    }\n\n    @Test\n    public void get() throws Exception {\n        String url = \"\/baf\/user\/{id}\";\n\n        mockMvc.perform(MockMvcRequestBuilders.get(url, 1)\n                .accept(MediaType.APPLICATION_JSON))\n                .andExpect(MockMvcResultMatchers.status().isOk())\n                .andDo(MockMvcResultHandlers.print())\n                .andReturn();\n    }\n\n    @Test\n    public void list() throws Exception {\n\n        mockMvc.perform(MockMvcRequestBuilders.post(\"\/baf\/user\/list\")\n                .param(\"pageNum\", \"1\")\n                .param(\"pageSize\", \"20\")\n                .param(\"username\", \"\")\n                .accept(MediaType.APPLICATION_JSON))\n                .andExpect(MockMvcResultMatchers.status().isOk())\n                .andDo(MockMvcResultHandlers.print())\n                .andReturn();\n\n    }\n\n    @Test\n    @Transactional\n    public void add() throws Exception {\n\n        JSONObject userInfo = new JSONObject();\n        userInfo.put(\"username\", \"\u738b\u6b66\");\n        mockMvc.perform(MockMvcRequestBuilders.post(\"\/baf\/user\/\")\n                .content(userInfo.toJSONString())\n                .contentType(MediaType.APPLICATION_JSON_VALUE)\n                .accept(MediaType.APPLICATION_JSON))\n                .andExpect(MockMvcResultMatchers.status().isOk())\n                .andDo(MockMvcResultHandlers.print())\n                .andReturn();\n\n    }<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1.\u5b9a\u4e00\u4e2a\u57fa\u7c7b 2.filter\u5904\u7406\u4e2d\u6587\u5b57\u7b26 3.\u5177\u4f53\u6d4b\u8bd5\u7c7b 3.1\u6ce8\u5165controller\uff0c\u521d\u59cb\u5316mockM [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[112,113],"tags":[],"_links":{"self":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1453"}],"collection":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1453"}],"version-history":[{"count":6,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1453\/revisions"}],"predecessor-version":[{"id":1459,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1453\/revisions\/1459"}],"wp:attachment":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}