3

Intellij で Spring 3.2 を使用して spring-mvc コントローラーをテストするために Junit Mockito を学習しています。私のコントローラーは

 @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String initUserSearchForm(ModelMap modelMap) {
        User user = new User();
        modelMap.addAttribute("User", user);
        return "linkedInUser";
    }

    @RequestMapping(value = "/byName", method = RequestMethod.GET)
    @ResponseStatus(HttpStatus.OK)
    public
    @ResponseBody
    String getUserByName(HttpServletRequest request,@ModelAttribute("userClientObject") UserClient userClient) {
        String firstName = request.getParameter("firstName");
        String lastName = request.getParameter("lastName");
        return getUserByName(userClient, firstName, lastName);
    }

私がやったことは、名前でユーザーを検索するフォームが 1 つあることです。UserClient オブジェクトはセッション属性であり、コントローラーの JUnit テスト ケースを作成しようとしました

 @Test
    public void testInitUserSearchForm() throws Exception {
        this.liClient = client.createUserClient();
        mockMvc.perform(get("/user"))
                .andExpect(status().isOk())
                .andExpect(view().name("user"))
                .andExpect(forwardedUrl("/WEB-INF/pages/user.jsp"));
    }

    @Test
    public void testGeUserByName() throws Exception {
        String firstName = "Wills";
        String lastName = "Smith";         
        mockMvc.perform(get("/user-byName"))
                .andExpect(status().isOk());

    }

メソッドをテストするにはどうすればよいgetUserByNameですか? また、セッション属性を追加するにはどうすればよいですか? そのメソッドの可能なテストでテストケースを書くのを手伝ってくれる人がいます。前もって感謝します

4

2 に答える 2

1

うーん。

あなたは試すことができます

mockMvc.perform(get("/user-byName").sessionAttr("userClientObject", userClientObject))
            .andExpect(status().isOk());

テスト フィクスチャで userClientObject をセットアップします。

"return getUserByName(userClient, firstName, lastName);" とは何ですか? 正確に?外部依存を伴わない場合は、 andExpect(jsonPath()) 句で戻り値をアサートするだけです。

ちなみに @SessionAttribute であるべきだと思いました。

于 2013-07-23T04:19:47.323 に答える
0

私が使う

mockMvc.perform(get("/user-byName").flashAttr("userClientObject", userClientObject)) .andExpect(status().isOk())

于 2015-10-30T06:01:14.540 に答える