1

我使用 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());
    }

一切看起来都很好。我也可以传递参数。但现在我需要发送 JSON(字符串)而不是参数。我怎样才能做到这一点?

4

2 回答 2

3

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

post("/trans/").content("{\"name\": \"grep\"}")
于 2014-10-22T09:55:37.083 回答
1

使用.content()而不是.param(),并且应该设置 contentType

post("/trans/").contentType(MediaType.APPLICATION_JSON).content("{\"name\": \"grep\"}")
于 2017-09-30T05:52:46.520 回答