MockMvc不响应后返回创建的资源

问题描述 投票:1回答:1

通常,当你发布到弹簧数据REST端点响应包含的URL到新创建的资源,并在其身上的新资源的JSON表示的位置标头。

但是,当我发布到MockMvc类似以下内容:

@RunWith(SpringRunner.class)
@SpringBootTest
public class OrderRestTest {

    @Autowired
    private ObjectMapper objectMapper;

    @Autowired
    private WebApplicationContext context;

    @Autowired
    private OAuthHelper oAuthHelper;

    private MockMvc mockMvc;

    @Before
    public void setup() {

        mockMvc = MockMvcBuilders
                .webAppContextSetup(context)
                .apply(springSecurity())
                .build();

    }

    @Test
    public void testSuperuserCanCreateOrder() throws Exception {

        RequestPostProcessor accessToken = oAuthHelper.addBearerToken("someSuperUser", "ROLE_SUPERUSER");

        Order order = new Order();
        order.salesMemo = "some sales memo";

        String responseFromTestRestTemplate = objectMapper.writeValueAsString(order);
        assertNotNull(responseFromTestRestTemplate);

        mockMvc.perform(
                post("/ErPApI/orders")
                        .with(accessToken)
                        .content(objectMapper.writeValueAsString(order))
                        .contentType(MediaType.APPLICATION_JSON))
                .andExpect(status().is2xxSuccessful());

        mockMvc.perform(
                get("/ErPApI/orders")
                        .with(accessToken))

                .andExpect(jsonPath("_embedded.orders", hasSize(1)))
                .andExpect(jsonPath("_embedded.orders[0].salesMemo", is("some sales memo")))

                .andReturn();


    }

}

后是成功的,但响应的身体是空白。有没有一种方法来模拟MockMvc真实的反应?是我的设置错了吗?

spring spring-boot spring-data-rest spring-boot-test mockmvc
1个回答
1
投票

设置Accept头在请求太application/json

© www.soinside.com 2019 - 2024. All rights reserved.