控制器Spring Junit中的模型对象

时间:2016-04-05 19:52:51

标签: java spring spring-mvc junit

我正在尝试为一个弹簧控制器写一个junit,其签名就是这样的

@RequestMapping(value = { "/addPharmcyInLookUpTable.form" }, method = { org.springframework.web.bind.annotation.RequestMethod.POST })
    public String processSubmitAddPhl(@ModelAttribute PhrmcyAdmin phrmcyAdmin,
            BindingResult result, SessionStatus status,
            HttpServletRequest request) throws Exception {

.....
....
}

这个的关键是

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/applicationContext.xml",
        "classpath:/puela-app-config.xml" }, inheritLocations = true)
public class AddPharmacyInLookUpTableControllerTest {

    public static junit.framework.Test suite() {
        return new JUnit4TestAdapter(
                AddPharmacyInLookUpTableControllerTest.class);
    }

    @InjectMocks
    private AddPharmacyInLookUpTableController controller;

    private static MockHttpServletRequest request;
    private static MockHttpServletResponse response;

    @Autowired
    private HandlerMapping handlerMapping;

    @Autowired
    private HandlerAdapter handlerAdapter;

    @BeforeClass
    public static void runBeforeAllTest() throws Exception {

        System.out.println("Running one time Setup");

        request = new MockHttpServletRequest();
        response = new MockHttpServletResponse();

    }

    private ModelAndView handle(final HttpServletRequest request,
            final HttpServletResponse response) throws Exception {

        final HandlerExecutionChain handler = handlerMapping
                .getHandler(request);
        Assert.assertNotNull(
                "No handler found for request, check you request mapping",
                handler);
        final Object controller = handler.getHandler();
        for (final HandlerInterceptor interceptor : handlerMapping.getHandler(
                request).getInterceptors()) {
            if (!interceptor.preHandle(request, response, controller)) {
                return null;
            }
        }
        return handlerAdapter.handle(request, response, controller);
    }


    @Test
    public void processRequestAddPhl_post() throws Exception
    {
        PhrmcyAdmin phrmcyAdmin = new PhrmcyAdmin();
        phrmcyAdmin.setPhlCalMailbox("Test");
        phrmcyAdmin.setPhlMailPharmacy("FootHill");
        request.setMethod("POST");
        request.setRequestURI("/addPharmcyInLookUpTable.form");
        // Code goes here

        MockHttpSession session = new MockHttpSession();
        ModelAndView mv = handle(request, response);
        assertEquals(mv.getViewName(), "addPhrmcyInTable.view");

    }

}

我正在尝试将此模型对象phrmcyAdmin与请求一起发送。知道如何处理模型对象吗?

0 个答案:

没有答案