Spring MockMvc不会在post响应中返回创建的资源
通常,当您发布到SpringDataREST端点时,响应包含位置头,其中包含指向新创建资源的url以及新资源在其主体中的json表示 但当我在MockMvc上发布如下内容时:Spring MockMvc不会在post响应中返回创建的资源,spring,spring-boot,spring-data-rest,spring-boot-test,mockmvc,Spring,Spring Boot,Spring Data Rest,Spring Boot Test,Mockmvc,通常,当您发布到SpringDataREST端点时,响应包含位置头,其中包含指向新创建资源的url以及新资源在其主体中的json表示 但当我在MockMvc上发布如下内容时: @RunWith(SpringRunner.class) @SpringBootTest public class OrderRestTest { @Autowired private ObjectMapper objectMapper; @Autowired private WebAp
@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();
}
}
post成功,但响应正文为空。有没有办法用MockMvc模拟真实的响应?我的设置错误吗?在请求中将
Accept
标题也设置为application/json
。如果不模拟服务器,这不是必需的,对吗?只是检查一下。还有一个属性可以强制返回新对象spring.data.rest.returnbody on create=true
和spring.data.rest.returnbody on update=true
。如果定义了,那就不是规则了。否则,仅当设置了Accept标头时才返回结果。