0

コントローラーをテストしようとしています。Spring は Profile オブジェクトにデータを入力しますが、空です。電話の前にメールを設定できますが、それでもnullです。適切な方法でプロファイルを渡すにはどうすればよいですか?

    private MockHttpServletRequest request;
    private MockHttpServletResponse response;

    @Autowired
    private RequestMappingHandlerAdapter handlerAdapter;

    @Autowired
    private RequestMappingHandlerMapping handlerMapping;

    @Before
    public void setUp() throws Exception {
        this.request = new MockHttpServletRequest();
        request.setContentType("application/json");
        this.response = new MockHttpServletResponse();
    }

    @Test
    public void testPost() {
        request.setMethod("POST");
        request.setRequestURI("/user/"); // replace test with any value

        final ModelAndView mav;
        Object handler;

        try {

            Profile p = ProfileUtil.getProfile();
            p.setEmail("test@mail.com");

            request.setAttribute("profile", p);

            System.out.println("before calling the email is " + p.getEmail());

            handler = handlerMapping.getHandler(request).getHandler();
            mav = handlerAdapter.handle(request, response, handler);
            Assert.assertEquals(200, response.getStatus());
            // Assert other conditions.
        } catch (Exception e) {

        }
    }

これがコントローラー

@RequestMapping(value = "/", method = RequestMethod.POST)
public View postUser(ModelMap data, @Valid Profile profile, BindingResult bindingResult) {

    System.out.println("The email is " + profile.getEmail());


}
4

1 に答える 1

0

コントローラー関数postUserに次の署名を使用してみてください。

public View postUser(ModelMap data, @ModelAttribute("profile") @Valid Profile profile, BindingResult bindingResult)

これがお役に立てば幸いです。乾杯。

于 2012-09-28T05:33:54.100 に答える