title: How to check values in response body with mockMvc - AssertionError: Status expected:<201> but was:<400>
body: <p>im new to test writing and i am trying to write junit tests for my controller class using mockMvc.</p>
  
  <p>Here are my classes:</p>
  
  <pre><code>public class StudentDTO {
  
  private final String firstName;
  private final String lastName;
  private final String JMBAG;
  private final Integer numberOfECTS;
  private final boolean tuitionShouldBePaid;}
  </code></pre>
  
  <p>Command class</p>
  
  <pre><code>public class StudentCommand { 
  @NotBlank (message = "First name must not be empty!")
  private String firstName;
  
  @NotBlank (message = "Last name must not be empty!")
  private String lastName;
  
  
  @NotNull(message = "Date of birth must be entered!")
  @Past(message = "Date of birth must be in the past!")
  private LocalDate dateOfBirth;
  
  @NotBlank(message = "JMBAG must not be empty!")
  @Pattern(message = "JMBAG must have 10 digits", regexp = "[\\d]{10}")
  private String jmbag;
  
  @NotNull(message = "Number of ECTS points must be entered!")
  @PositiveOrZero(message = "Number of ECTS points must be entered as a positive integer!")
  private Integer numberOfECTS;}
  </code></pre>
  
  <p>Controller class:</p>
  
  <pre><code>@Secured({"ROLE_ADMIN"})
  @PostMapping
  public ResponseEntity&lt;StudentDTO&gt; save(@Valid @RequestBody final StudentCommand command){
      return studentService.save(command)
              .map(
                      studentDTO -&gt; ResponseEntity
                              .status(HttpStatus.CREATED)
                              .body(studentDTO)
              )
              .orElseGet(
                      () -&gt; ResponseEntity
                              .status(HttpStatus.CONFLICT)
                              .build()
              );
  }
  </code></pre>
  
  <p>Test class:</p>
  
  <pre><code>@SpringBootTest
  @AutoConfigureMockMvc class StudentControllerTest {
  @Autowired
  private MockMvc mockMvc;
  
  @MockBean
  private StudentService studentServiceMock;
  
  @Autowired
  private ObjectMapper objectMapper;
  
  private final String TEST_FIRST_NAME = "Marry";
  private final String TEST_LAST_NAME = "Blinks";
  private final String TEST_JMBAG = "0025478451";
  private final Integer TEST_NUMBER_OF_ECTS = 55;
  private final boolean TEST_TUITION_SHOULD_BE_PAID = true;
  private final LocalDate TEST_DATE_OF_BIRTH = LocalDate.parse("1999-01-12");
  
  @Test
  void testSave() throws Exception {
  
      StudentCommand studentCommand = new StudentCommand(TEST_FIRST_NAME,TEST_LAST_NAME,TEST_DATE_OF_BIRTH,TEST_JMBAG,TEST_NUMBER_OF_ECTS);
  
      this.mockMvc.perform(
              post("/student")
                      .with(user("admin")
                              .password("test")
                              .roles("ADMIN")
                      )
                      .with(csrf())
              .contentType(MediaType.APPLICATION_JSON)
              .content(objectMapper.writeValueAsString(studentCommand))
              .accept(MediaType.APPLICATION_JSON)
      )
              .andExpect(status().isCreated())
              .andExpect(content().contentType(MediaType.APPLICATION_JSON))
              .andExpect(jsonPath("$.jmbag").value(TEST_JMBAG))
              .andExpect(jsonPath("$.firstName").value(TEST_FIRST_NAME))
              .andExpect(jsonPath("$.lastName").value(TEST_LAST_NAME));
  }
  </code></pre>
  
  <p>I always get test failed with this error: </p>
  
  <pre><code>
  MockHttpServletRequest:
        HTTP Method = POST
        Request URI = /student
         Parameters = {_csrf=[30de7a8f-a3d5-429d-a778-beabd1a533da]}
            Headers = [Content-Type:"application/json;charset=UTF-8", Accept:"application/json", Content-Length:"272"]
               Body = {"firstName":"Marry","lastName":"Blinks","dateOfBirth":{"year":1999,"month":"JANUARY","monthValue":1,"dayOfMonth":12,"chronology":{"id":"ISO","calendarType":"iso8601"},"dayOfWeek":"TUESDAY","leapYear":false,"dayOfYear":12,"era":"CE"},"jmbag":"0025478451","numberOfECTS":55}
      Session Attrs = {}
  Handler:
               Type = com.studapp.students.StudentController
             Method = com.studapp.students.StudentController#save(StudentCommand)
  MockHttpServletResponse:
             Status = 400
      Error message = null
            Headers = [Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers", X-Content-Type-Options:"nosniff", X-XSS-Protection:"1; mode=block", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", X-Frame-Options:"DENY"]
       Content type = null
               Body = 
      Forwarded URL = null
     Redirected URL = null
            Cookies = []
  java.lang.AssertionError: Status expected:&lt;201&gt; but was:&lt;400&gt;
  Expected :201
  Actual   :400
  
  </code></pre>
  
  <p>I am not sure why it fails. Why is response body blank? I dont want to call my service because im not testing it, but i feel like i should call it somehow(but then again, im not testing the service).
  Any suggestion would be appreciated.</p>