2014-10-22 70 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\"}")