Проблема с responseEntity. MockMvc.Perform () выдает код состояния 200, даже если ResponseEntity.HttpStatus равен 201

Я пытаюсь издеваться над почтовым методом контроллера. Я хочу, чтобы он возвращал код состояния 201 (СОЗДАНО). Но он дает код состояния 200. Ниже приведен код Это мой класс контроллера

package com.example.demo;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

public @RestController
class SomeController{

    @PostMapping("/insertString")
    public ResponseEntity<String> insertString(String str) {
        return new ResponseEntity<>(new String("monster"),HttpStatus.CREATED);
    }
}

Это мой тестовый костюм junit

package com.example.demo;

import static org.junit.Assert.*;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.mockito.Mockito.anyString;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;   

@RunWith(SpringRunner.class)
@WebMvcTest(SomeController.class)
public class TestClass {

@Autowired
private MockMvc mockMvc;

@MockBean
private SomeController someController;

@Test
public void test() throws Exception {

    ResponseEntity<String> entity = new ResponseEntity<>(HttpStatus.CREATED);

    when(someController.insertString(anyString())).thenReturn(entity);

    RequestBuilder requestBuilder = MockMvcRequestBuilders
            .post("/insertString")
            .accept(MediaType.APPLICATION_JSON)
            .content("monkey")
            .contentType(MediaType.APPLICATION_JSON);

    MvcResult result = mockMvc.perform(requestBuilder)
            .andExpect(status().isCreated())
            .andReturn();
    System.out.println(result.getResponse().getContentAsString());
}

}

Получение ошибки

java.lang.AssertionErrror: ожидаемый статус: <201>, но был: <200>

Хотя я упомянул статус HttpStatus.CREATED в объекте RequestEntity, почему я получаю 200. Пожалуйста, если кто-то может помочь

Вы в этом разобрались?

Simeon Leyzerzon 09.02.2020 22:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
889
1

Ответы 1

Попробуй изменить

public ResponseEntity<String> insertString(String str)

к

public ResponseEntity<String> insertString(@RequestBody String str)

Я провел тест с приведенным выше кодом, и он прошел.

Другие вопросы по теме