2014-10-22 52 views
0

我使用org.springframework.test.web.servlet.MockMvc调用Spring控制器。如何在春季测试中发送json而不是params

它看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring/root-context.xml" }) 
public class TestController { 

    @Mock 
    private TestService testService; 

    @InjectMocks 
    private TestController testController; 

    private MockMvc mockMvc; 

    @Before 
    public void setup() { 
     MockitoAnnotations.initMocks(this); 
     this.setMockMvc(MockMvcBuilders.standaloneSetup(testtController).build()); 
    } 

    @Test 
    public void test() throws Exception { 
     this.mockMvc.perform(post("/trans/").param("name", "grep")).andExpect(status().isOk()); 
    } 

一切看起来都很好。我也可以通过params。 但现在我需要发送JSON(String)而不是params。我怎样才能做到这一点?

回答

2

您应该使用.content()而不是.param()

post("/trans/").content("{\"name\": \"grep\"}") 
+0

感谢。回答!和+1表决 – grep 2014-10-22 09:57:13

0

使用.content()代替.param(),并应设置的contentType

post("/trans/").contentType(MediaType.APPLICATION_JSON).content("{\"name\": \"grep\"}")