Получение пустого ответа в тестовых примерах блока управления пружинным упором

Я написал модульные тестовые примеры для контроллера пружинного упора для нижеприведенного метода

 @PutMapping("/offers/{jobTitle}")
 public Offer updateOffer(@PathVariable String jobTitle,@Valid @RequestBody Offer offer) {          
           return offerService.updateNoOfPost(jobTitle, offer);
  }

Ниже мой класс обслуживания

  @Override
    public Offer updateNoOfPost(String jobTitle, Offer offer) {
        if (!offerRepository.existsById(jobTitle))
            throw new ResourceNotFoundException("JobTitle "+jobTitle+" not found !!");
        offer.setNoOfPost(offer.getNoOfPost());
        return offerRepository.save(offer);
    }

Я написал тестовый пример для этого метода, используя testNg и mockito.

public class OfferControllerTest {

private MockMvc mvc;
private JacksonTester<Offer> jsonOffer;

@Mock
private OfferService service;

@InjectMocks
OfferController offerController;

private Offer offer;

@BeforeMethod
public void setup() {
    offer = new Offer("LSE", new Date(),1);
     MockitoAnnotations.initMocks(this);
      mvc = MockMvcBuilders.standaloneSetup(offerController)
                .build();

      JacksonTester.initFields(this, new ObjectMapper());
}
   @Test
   public void updateOffer() throws  Exception {
       Mockito.when(service.updateNoOfPost("LSE", offer)).thenReturn(offer);
       MockHttpServletResponse response = mvc.perform(
               put("/offers/LSE").contentType(MediaType.APPLICATION_JSON).content(
                       jsonOffer.write(new Offer("SE", new Date(), 19)).getJson()
               )).andReturn().getResponse();
       assertThat(response.getContentAsString()).isEqualTo(new ObjectMapper().writeValueAsString(offer));
   }

Я получаю код ответа 200. но получаю пустой body.pls, найдите ошибку ниже

FAILED: updateOffer
org.junit.ComparisonFailure: expected:<"[{"jobTitle":"LSE","createdAt":"2018-10-27","noOfPost":1}]"> but was:<"[]">
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

что мне не хватает? это стандартный способ написания модульных тестов для контроллера пружинного упора?

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

Ответы 1

Ниже насмешка должна исправить проблему

Mockito.when(service.updateNoOfPost(Mockito.any(String.class), Mockito.any())).thenReturn(offer);

Подробнее здесь: стек-46914252

это сработало @Barath. Я также сослался на ссылку. проблема заключалась в разборе предложения json, которое мы передавали в теле запроса, но мы жестко кодировали значение, так что это не могло быть проблемой.

Ankit 28.10.2018 06:56

@Ankit, если приведенный выше ответ вам помог, примите его.

Barath 01.02.2019 10:41

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