如何在春季测试中发送json而不是params

时间:2014-10-22 09:49:33

标签: spring spring-mvc spring-test spring-test-mvc mockmvc

我使用org.springframework.test.web.servlet.MockMvc调用Spring控制器。

看起来像这样:

@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 个答案:

答案 0 :(得分:3)

您应该使用.content()代替.param()

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

答案 1 :(得分:1)

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

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